在Linq比较

Tim*_*Tim 4 c# linq

我在数据库中有一堆数据,我想为其编写搜索功能.问题是我得到了很多重复.数据以名称和姓氏结构,我想只发送一个唯一的两个,所以如果我有两个名字为Foo,姓氏只有一个会显示.

无论我如何看待它,我总是回到我需要比较它们.

var names = db.People
      .Where(r => r.Name.Contains(q))
      .OrderBy(r=> r.Name)
       *Psuedo-Code*
       if((this.Name==next.Name)&&(this.surSame==next.Surname)
           toss next data and loop to next
       *Psuedo-Code*
      .Take(5);
Run Code Online (Sandbox Code Playgroud)

也许有点乱,但你明白我想要实现的目标.我能以某种方式做到这一点还是有更好的方法去做?

Ann*_* L. 10

你可以这样做:

var names = db.People
    .Where(r => r.Name.Contains(q))
    .Select(r => new { Name = r.Name, Surname = r.Surname })
    .Distinct()
    .Take(5);
Run Code Online (Sandbox Code Playgroud)

但如果这不起作用,因为你需要整个人的记录,你只想要第一个,我已经成功完成了这样的事情:

var names = db.People
   .Where(r => r.Name.Contains(q))
   .GroupBy(r => new { Name = r.Name, Surname = r.Surname })
   .Select(g => g.First())
   .Take(5);
Run Code Online (Sandbox Code Playgroud)