我有一些代码按“Value1”对表进行分组,还有一些循环将每个组的顶行添加到列表中。这是一个非常丑陋的方法,我想知道我是否可以在LINQ查询中用更多行替换其中一个foreach循环?问题是,我没有最模糊的想法如何做到这一点。
var Result =
from a in DB.Table1
group new {Values = a} by a.Value1 into c
select new {everything = c};
foreach (var Row in Result)
{
foreach (var RowAll in Row.Everything)
{
List.Add(new List<string>() {RowAll.Value1, RowAll.Value2})
break;
}
}
答案 0 :(得分:1)
var List =
(from Row in Result
let RowAll = row.Everything.First()
select new List<string>() {RowAll.Value1, RowAll.Value2}
).ToList();
或者,结合原始查询:
var List =
(from a in DB.Table1
group a by a.Value1 into c
select new List<string>() {c.Key, c.First().Value2}
).ToList();
答案 1 :(得分:0)
使用FirstOrDefault:
var query = from row in result
let rowAll = row.Everything.FirstOrDefault()
where rowAll != null
select new List<string> {rowAll.Value1, rowAll.Value2};
var list = query.ToList();
重读第一个查询我意识到你正在对'a'的属性进行分组,所以不应该有空分组。 First()应该像其他海报示例一样安全。