C# C分组不同
我有一个名为Info的数据库表,它存储[Data]、[fkID]、[UserID]、[Timestamp]。[数据]实际上是多列的,但这并不重要 本质上,用户可以将数据输入表单,表单会在信息中插入新行 我希望能够从每个[UserID]中为特定的[fkID]选择最新的[Data]项。这可以在林克完成,我只是还没弄明白。以下是我到目前为止的情况:C# C分组不同,c#,linq,C#,Linq,我有一个名为Info的数据库表,它存储[Data]、[fkID]、[UserID]、[Timestamp]。[数据]实际上是多列的,但这并不重要 本质上,用户可以将数据输入表单,表单会在信息中插入新行 我希望能够从每个[UserID]中为特定的[fkID]选择最新的[Data]项。这可以在林克完成,我只是还没弄明白。以下是我到目前为止的情况: var q = (from i in db.Info where i.fkID == @paramID orderby T
var q = (from i in db.Info
where i.fkID == @paramID
orderby Timestamp descending
groupby new {i.UserID})
.Distinct()
这显然行不通。它返回正确的用户ID,但不是我实际想要的[Data]部分
总之,我想做的是:
对于具有特定fkID的Info中的每个条目,我希望从每个用户中选择最近的行
我想知道如何在LINQ中执行此操作。您应该使用.First而不是.Distinct您应该使用.First而不是.Distinct您需要选择每个组中的第一行,如下所示:
var q = from i in db.Info
where i.fkID == @paramID
group i by i.UserID into g
select new {
UserID = g.Key,
Recent = g.OrderByDescending(i => i.Timestamp).First()
};
您需要选择每个组中的第一行,如下所示:
var q = from i in db.Info
where i.fkID == @paramID
group i by i.UserID into g
select new {
UserID = g.Key,
Recent = g.OrderByDescending(i => i.Timestamp).First()
};
这看起来不错。我还没有测试过它,但我认为它是有效的。当我测试它时,我会把你的标记为正确。谢谢。这个看起来不错。我还没有测试过它,但我认为它是有效的。当我测试它时,我会把你的标记为正确。谢谢