Linq Single Column Group不工作

时间:2011-07-25 20:30:59

标签: c# linq group-by

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

这是我的Linq

from r in myTable
group r.UserID by r.UserID

但是在Linq pad中它接近我想要的但是每个相似的ID都有一个'key'或者所有相同id组合在一起的东西,包含在结果中。我只想要一个数字列表。

这是完美的SQL。

SELECT UserID FROM myTable
GROUP BY UserID

3 个答案:

答案 0 :(得分:6)

为什么不

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

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

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

如果您只打算使用组ID,则无需分组。

答案 1 :(得分:1)

我认为你想要的实际SQL是

SELECT DISTINCT UserID FROM myTable

Group by正在做与您特定使用它的副作用相同的事情。

我相信相同的语法在LINQ语句语法中可能起作用,dlev表示虽然我不确定它是否正确转换为SQL,因为它不在语句语法中。

如果我弄错了,而且L2S会正确地转换他的版本,那么无论如何,dlev都会把它固定下来。

答案 2 :(得分:0)

您的查询为您提供了群组。如果你只想要钥匙,就应该拿钥匙。

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);