linq查询和选择语句

时间:2014-06-02 18:10:46

标签: c# .net linq

我有以下linq

 var data = repository.FindAll().Where(x => x.Country.ID == ID).ToList();
 var serializedData = (from c in data select new { ID = c.ID, Name = c.Name });

我怎么能将这个serializedData查询简化(合并)第一个查询?

3 个答案:

答案 0 :(得分:8)

嗯,你几乎肯定会摆脱ToList()调用,一开始 - 这样选择部分将变成SQL并避免拉下不必要的数据。您可以在查询表达式中执行所有操作:

var serializedData = from x in repository.FindAll()
                     where x.Country.ID == ID
                     select new { x.ID, x.Name };

请注意,如果FindAll()返回IEnumerable<T>而不是IQueryable<T>,您应该看看做了的另一种方法是否返回了IQueryable<T> {1}} - 否则您将从数据库中获取整个表。 (至少,我假设有一个数据库涉及......你还没有给我们很多背景。)

答案 1 :(得分:0)

应该这样做!

 var serializedData = repository.FindAll().Where(x => x.Country.ID == ID).Select( c => new { ID = c.ID, Name = c.Name }).ToList()

答案 2 :(得分:0)

使用它:

var serializedData = repository.FindAll().where(x=>x.CountryID == ID)
                               .Select(c=>new { c.ID ,c.Name }).ToList();