我在查询文章列表的时候,
IQueryable<Article> list = db.Articles.Include("Category").Where(a => a.CategoryID == CategoryID);
想返回的列表中包含了文章内容(Content字段),我想要返回的 Article 列表中 Content字段为空应该怎么写?要返回的类型还是IQueryable<Article>。
谢谢!
你的linq后面接着加一点吧,.Select(a=>new Article{CategoryID = a.CategoryID ,Content=""})
谢谢你的帮助。
你说的这种方式我试过,因为Article有一个导航属性Category。在Select(a=>new Article 会出现 :“LINQ to Entities 查询中无法构造实体或复杂类型“的错误,要如何处理才能正常呢。
@洞庭夕照: 他说的是对的,你的错误是因为你的导航属性配置没有成功,所以ef建模失败。
@洞庭夕照: 那你就只改Content字段看可不可以,在你的linq后面加如下语句:
.Select(a =>{a.Content = “”;return a; });
@LCM:
.Select(a =>{a.Content = “”;return a; });这个方式没成功。
按照你第一次讲的写法在select之前+tolist()可以了。
IQueryable<Article> list = db.Articles.Include("Category").Where(a => a.CategoryID == CategoryID).ToList().Select(a=>new Article{CategoryID = a.CategoryID ,Content=""})
这样写成功了。
但是在性能上有点问题。
我本意是public IQueryable<Article> List(int CategoryID)
{
list = db.Articles.Include("Category").Where(a => a.CategoryID == CategoryID);
return list;
}
获取到文章列表后。有可能分页,也有可能不分页,就有写了个分页函数。
public PageList(IQueryable<T> Item,int currentPage,int pageSize)
{
TotalCount = Item.Count();
if (TotalCount > 0)
{
TotalPage = TotalCount / pageSize;
if ((TotalCount % pageSize) > 0) TotalPage++;
}
else { TotalPage = 0; }
var list = Item.Take(pageSize).Skip(pageSize * (currentPage - 1)).ToList();
AddItem(list);
}
然后通过以下方式电泳
var list = articleRsy.List(CategoryID);
PageList<Models.Article> pageList = new PageList<Models.Article>(list, page, 20);
return View(pageList);
感觉文章多了).ToList()性能上会有问题。我在考虑以下。
多谢你的帮助。
也感谢 今昭 兄弟!