C# 仅从每组中获取最上面一行
我有一些按“Value1”对表进行分组的代码,还有一些循环将每个组的顶行添加到列表中。这是一种非常丑陋的方法,我想知道是否可以在LINQ查询中用几行代码替换其中一个foreach循环?问题是,我根本不知道怎么做C# 仅从每组中获取最上面一行,c#,linq,C#,Linq,我有一些按“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) { fore
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;
}
}
var结果=
从DB.Table1中的a
将新的{Values=a}按a.Value1分组到c中
选择new{everything=c};
foreach(结果中的var行)
{
foreach(var RowAll in Row.Everything)
{
添加(新列表(){RowAll.Value1,RowAll.Value2})
打破
}
}
使用:
var列表=
(从结果中的第行开始)
让RowAll=row.Everything.First()
选择新列表(){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();
var列表=
(来自DB.1中的a)
a组按a.Value1分为c组
选择新列表(){c.Key,c.First().Value2}
).ToList();
使用:
var列表=
(从结果中的第行开始)
让RowAll=row.Everything.First()
选择新列表(){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();
var列表=
(来自DB.1中的a)
a组按a.Value1分为c组
选择新列表(){c.Key,c.First().Value2}
).ToList();
使用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();
var query=来自结果中的行
让rowAll=row.Everything.FirstOrDefault()
罗威尔在哪里!=无效的
选择新列表{rowAll.Value1,rowAll.Value2};
var list=query.ToList();
重读您的第一个查询时,我意识到您是在“a”属性上分组的,所以不应该有空分组。First()应该和其他海报示例一样安全。使用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();
var query=来自结果中的行
让rowAll=row.Everything.FirstOrDefault()
罗威尔在哪里!=无效的
选择新列表{rowAll.Value1,rowAll.Value2};
var list=query.ToList();
重读您的第一个查询时,我意识到您是在“a”属性上分组的,所以不应该有空分组。First()应该和其他示例一样安全