实体框架返回不同的记录问题

Mos*_*afa 12 c# asp.net entity-framework distinct complextype

我有一个PC Enity有一些属性,我想基于属性返回一个不同的对象(PC或复杂类型或其他)的列表,以便将它绑定到服务器控件,如DropDownList.因为我的方法位于BLL我不能返回匿名类型,所以我创建了一个具有两个peroperties的Branch ComplexType.

我写的是这样但它有重复的记录:

List<Branch> result = ( from p in _context.PCs
                        where p.UserId== userId
                        select new Branch()
                                   {
                                      BranchId= p.BranchId,
                                      BranchName=p.BranchName
                                   }).Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)

编辑: 谢谢大家,这有效:

List<PC> result = _context.PCs
                  .GroupBy(p=>p.BranchName , p.BranchId})
                  .select(g=>g.First())
                  .ToList();
Run Code Online (Sandbox Code Playgroud)

Hab*_*bib 11

这将为select语句中的所有列返回不同的行.如果您想要特定列的不同行,请指定该特定列

List<Branch> result = ( from p in _context.PCs
                        where p.UserId== userId
                        select new Branch()
                                   {
                                      BranchId= p.BranchId,
                                    }).Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)

如果要基于多个列获取不同的值,则必须创建一个组,然后从该组中选择第一个值.在这种情况下,您将不会使用Distinct

List<Branch> distinctResult = _context.PCs
  .GroupBy(p => new Branch {p.BranchId, p.BranchName} )
  .Select(g => g.First())
  .ToList(); 
Run Code Online (Sandbox Code Playgroud)