我正在通过数据库从我的数据库填充下拉列表,但是我的数据库有重复的值(相同的列),它在我的下拉列表中重新生成,具有重复值。
我正在使用实体框架和lambda所以我尝试了这个:
public IList<ModelSQL.puzzlecontent> GetID(int id)
{
return context.puzzlecontents.Where(i => i.WordPuzzleID == id).Distinct().ToList();
}
ModelSQL是我的文件夹名称,由我的CRUD类文件(puzzlecontent)组成。
但是,上面的代码没有显示任何错误,但它没有帮助删除下拉列表中的重复值。
答案 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
的DistinctBypublic 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();
}