我是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
答案 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);