加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 06:32:24 所属栏目:百科 来源:网络整理
导读:我有一个具有一些属性的PC Enity,我想返回一个基于属性的不同对象(PC或复杂类型或任何)的列表,以便将其绑定到像DropDownList这样的服务器控件.并且因为我的方法位于BLL我不能返回匿名类型,所以我创建了一个分支复杂类型,它有两个操作. 我这样写,但有重复的记
我有一个具有一些属性的PC Enity,我想返回一个基于属性的不同对象(PC或复杂类型或任何)的列表,以便将其绑定到像DropDownList这样的服务器控件.并且因为我的方法位于BLL我不能返回匿名类型,所以我创建了一个分支复杂类型,它有两个操作.

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

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

编辑:
谢谢大家,这个工作:

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

解决方法

这将返回不同行的SELECT语句中的所有列.如果你想为一个特定的列不同的行只是指定特定列
List<Branch> result = ( from p in _context.PCs
                        where p.UserId== userId
                        select new Branch()
                                   {
                                      BranchId= p.BranchId,}).Distinct().ToList();

如果你想获得基于多列不同的值,那么你必须创建一个组,然后选择从该组中第一个值.在这种情况下,你不会使用DISTINCT,例如

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读