通过id区分对象列表

Nie*_*man 8 c# asp.net list distinct linq-to-sql

我有一个程序,其中有一个主题(如论坛),人们可以对该主题作出反应.

用户:

  1. ID
  2. 名字

话题:

  1. ID
  2. 学科

反应:

  1. ID
  2. topic_id
  3. 内容

码:

List<USER> ListOfAllUsers = new List<USER>();
var AllReactions = from r in db.REACTIONs
                   where r.topic_id == _topic_id
                   select r;

foreach (var itemX in AllReactions)
{
    ListOfAllUsers.Add(itemX.USER);
}

//Distinct the list of duplicates
var ListOfUsers = ListOfAllUsers.Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)

现在,"distinct"列表仍然有一些重复,如何根据用户ID区分列表?或者也许有另一种更好的方法来做到这一点.提前致谢.

Kam*_*ski 18

您可以使用GroupBy来实现这一目标

var ListOfUsers = ListOfAllUsers.GroupBy(x => x.Id)
                                  .Select(g => g.First())
                                  .ToList();
Run Code Online (Sandbox Code Playgroud)

  • +1 同意,解决方案有效。它不应该被否决(特别是没有任何评论) (2认同)