Linq单列组不工作

本文关键字:工作 单列组 Linq | 更新日期: 2023-09-27 18:03:34

我是Linq新手,所以请原谅我的无知,但我需要按表中的列分组,然后返回该列。我应该得到一个唯一的数字列表。

这是我的Linq
from r in myTable
group r.UserID by r.UserID

但在Linq pad它接近我想要的,但每个类似的ID有一个"键"或与所有相同的ID组合在一起的东西,包括在结果。我只想要一个数字列表。

这是完美的SQL。

SELECT UserID FROM myTable
GROUP BY UserID

Linq单列组不工作

为什么不

var userIds = myTable.Select(r => r.UserId).Distinct();

或者,如果您喜欢查询语法

var userIds = (from r in myTable select r.UserId).Distinct();

如果只使用组id,则不需要分组。

我认为你真正需要的SQL是

SELECT DISTINCT UserID FROM myTable

Group by和你使用它的副作用是一样的。

我相信相同的语法很可能在LINQ语句语法中起作用,dlev所说的会起作用,尽管我不确定它是否正确转换为SQL,因为它不在语句语法中。

如果我错了,L2S会正确地转换他的版本,那么无论如何dlev都把它钉住了。

您的查询给出了组。如果你只是想要钥匙,你应该得到钥匙。

IQueryable<IGrouping<int, Record>> query1 =
  from r in myTable
  group r.UserID by r.UserID;
IQueryable<int> query2 =
  from r in myTable
  group r.UserID by r.UserID into g
  select g.Key;
  //alternatively
query1 = myTable.GroupBy(r => r.UserID);
query2 = query1.Select(g => g.Key);