区别于不使用lambda Duplicate下拉列表值

时间:2013-09-03 05:52:41

标签: c# lambda distinct

我正在通过数据库从我的数据库填充下拉列表,但是我的数据库有重复的值(相同的列),它在我的下拉列表中重新生成,具有重复值。

我正在使用实体框架和lambda所以我尝试了这个:

  public IList<ModelSQL.puzzlecontent> GetID(int id)
    {
        return context.puzzlecontents.Where(i => i.WordPuzzleID == id).Distinct().ToList();
    }

ModelSQL是我的文件夹名称,由我的CRUD类文件(puzzlecontent)组成。

但是,上面的代码没有显示任何错误,但它没有帮助删除下拉列表中的重复值。

2 个答案:

答案 0 :(得分:2)

您可以使用GroupBy

public IList<ModelSQL.puzzlecontent> GetID(int id)
{
   //for grouping by multiple properties you can use Groupby like
   // .GroupBy(i=>new { i.WordPuzzleID,i.SecondProperty})
   return context.puzzlecontents
                 .Where(i => i.WordPuzzleID == id)
                 .GroupBy(i=>i.WordPuzzleID)
                 .Select(g=>g.First()).ToList();
}

或LINQ to Objects您可以使用MoreLinq

的DistinctBy
public IList<ModelSQL.puzzlecontent> GetID(int id)
    {
        return context.puzzlecontents.Where(i => i.WordPuzzleID == id).DistinctBy(i=>i.WordPuzzleID ).ToList();
    }

答案 1 :(得分:1)

您在所有列上调用Distinct。如果您有一个唯一的列,例如在该表中自动识别您将始终获得所有记录。

在distinct之前使用select并仅选择所需的列并排除唯一列

 public IList<ModelSQL.puzzlecontent> GetID(int id)
    {
        return context.puzzlecontents.Where(i => i.WordPuzzleID == id).Select(pc=>new{
              Column1 = pc.Column1,Column2 = pc.Column2    
        }).Distinct().ToList();
    }