我有一个具有一些属性的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();