如何仅使用 linq 按一列分组?
how to group by one column only using linq?
我正在使用 Linq 查询对一列(电话串)和 return 该列以及名为 Status 的第二列的最后一个值(也是一串数字)进行分组。我想将这个查询的结果添加到一个新的数据表中。
我试过很多方法,但结果总是一组两列在一起,而不是只有一列。如果我从数据表中删除字段状态,则该组工作正常,但我需要它。示例:
phone状态
123 ---------- 1
123 ---------- 2
我想检索结果:123, 2 但我得到了两行。
知道为什么会发生这样的事情吗?这是代码:
var queryGroupLog =
from log2 in lg2.AsEnumerable()
group log2 by log2.Field<string>("Phone") into groupPhone
select groupPhone.OrderBy(p => p.Field<string>("Status")).LastOrDefault();
new KeyValuePair(groupPhone.Key,groupPhone.OrderBy((p) => p.Field("Status")).LastOrDefault()))
您可以尝试这样的操作:
var queryGroupLog = from log2 in lg2.AsEnumerable()
group log2 by log2.Field<string>("Phone") into groupPhone
select new
{
Phone = groupPhone.Key,
Status = groupPhone.OrderBy(p => p.Field<string>("Status"))
.LastOrDefault()
};
我正在使用 Linq 查询对一列(电话串)和 return 该列以及名为 Status 的第二列的最后一个值(也是一串数字)进行分组。我想将这个查询的结果添加到一个新的数据表中。
我试过很多方法,但结果总是一组两列在一起,而不是只有一列。如果我从数据表中删除字段状态,则该组工作正常,但我需要它。示例:
phone状态
123 ---------- 1
123 ---------- 2
我想检索结果:123, 2 但我得到了两行。 知道为什么会发生这样的事情吗?这是代码:
var queryGroupLog =
from log2 in lg2.AsEnumerable()
group log2 by log2.Field<string>("Phone") into groupPhone
select groupPhone.OrderBy(p => p.Field<string>("Status")).LastOrDefault();
new KeyValuePair(groupPhone.Key,groupPhone.OrderBy((p) => p.Field("Status")).LastOrDefault()))
您可以尝试这样的操作:
var queryGroupLog = from log2 in lg2.AsEnumerable()
group log2 by log2.Field<string>("Phone") into groupPhone
select new
{
Phone = groupPhone.Key,
Status = groupPhone.OrderBy(p => p.Field<string>("Status"))
.LastOrDefault()
};