我有以下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查询简化(合并)第一个查询?
答案 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();