首页 新闻 会员 周边

Entify Framework查询的时候如何设置某字段为固定值?

0
悬赏园豆:20 [已解决问题] 解决于 2012-02-14 15:57

我在查询文章列表的时候,

 IQueryable<Article> list = db.Articles.Include("Category").Where(a => a.CategoryID == CategoryID);

想返回的列表中包含了文章内容(Content字段),我想要返回的 Article 列表中 Content字段为空应该怎么写?要返回的类型还是IQueryable<Article>。

谢谢!

洞庭夕照的主页 洞庭夕照 | 初学一级 | 园豆:129
提问于:2012-02-13 16:27
< >
分享
最佳答案
2

你的linq后面接着加一点吧,.Select(a=>new Article{CategoryID = a.CategoryID ,Content=""})

收获园豆:20
LCM | 大侠五级 |园豆:6876 | 2012-02-13 16:42

谢谢你的帮助。

你说的这种方式我试过,因为Article有一个导航属性Category。在Select(a=>new Article 会出现 :“LINQ to Entities 查询中无法构造实体或复杂类型“的错误,要如何处理才能正常呢。

洞庭夕照 | 园豆:129 (初学一级) | 2012-02-13 19:06

@洞庭夕照: 他说的是对的,你的错误是因为你的导航属性配置没有成功,所以ef建模失败。

today4king | 园豆:3499 (老鸟四级) | 2012-02-14 10:16

@洞庭夕照: 那你就只改Content字段看可不可以,在你的linq后面加如下语句:

.Select(a =>{a.Content = “”;return a; });

LCM | 园豆:6876 (大侠五级) | 2012-02-14 10:28

@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()性能上会有问题。我在考虑以下。

多谢你的帮助。

也感谢 今昭 兄弟!

洞庭夕照 | 园豆:129 (初学一级) | 2012-02-14 15:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册