我应该如何从List <T>的自定义对象中提取不同值的集合?

ind*_*dra 3 c# linq asp.net lambda list

我有一个对象列表 - 让我们说它们是订单.

订购
OrderID
Date
SalesmanId
...

我想提取Distinct的列表SalesmanId从该列表秒.做这个的最好方式是什么?我不认为它通过手动循环......是吗?

更新 感谢您的回复.我想到了一个额外的要求(在Jon Skeets回答之后概述)并且编码如下:

var salesusers = from s in lstOrders 
                 group s by new { s.SalesUserId,s.Username} 
                 into g  
                 select new { UserName = g.Key.Username, UserId = g.Key.SalesUserId };
Run Code Online (Sandbox Code Playgroud)

它有效,但我不确定这是否是正确的方法,或者我是否离开了标记?

谢谢.

更新#2: 这个跑步和跑步 - 像我这样的新手可能会发现这个链接问题的答案也很有用.

Jon*_*eet 12

如果您只需要获得SalesmanIds,则很容易:

var salesmanIds = orders.Select(x => x.SalesmanId)
                        .Distinct();
Run Code Online (Sandbox Code Playgroud)

ToList()如果您需要它,请致电List<T>.

你需要一个using指令System.Linq.

编辑:好的,要获得名称和ID,您可以使用:

var salesmanIds = orders.Select(x => new { x.SalesmanId, x.UserName })
                        .Distinct();
Run Code Online (Sandbox Code Playgroud)