我有一个像这样的数据列表:
ID AddressPurpose Address ... 1 L 1 P 2 L 2 P 3 P 3 L 4 P 4 L 5 P 6 L
我希望能够过滤数据,以便对于每个唯一的数字,如果有一个P行,则返回它,否则返回L行.所以数据看起来像这样:
ID AddressPurpose Address ... 1 P 2 P 3 P 4 P 5 P 6 L
目前我有这个查询工作正常:
var query = from c in list orderby c.AddressPurpose descending group c by c.ID into g select g; var finalList = new List(); foreach (var list in query) { finalList.Add(list.First()); } return finalList;
没有使用额外的foreach,有没有更好的方法来做到这一点?
您可以始终嵌套查询:
var query = from i in ( from c in list orderby c.AddressPurpose descending group c by c.ID into g select g) select i.First(); return query;
我确信这不是唯一的方法(或者甚至可能是最好的方式),但它确实将你的"foreach"包装到一个查询中.
编辑
实际上,您可以将其简化为:
var query = from c in list orderby c.AddressPurpose descending group c by c.ID into g select g.First();
这似乎给出了正确的结果.