首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

linq Distinct 去掉重复有关问题

2012-01-28 
linq Distinct 去掉重复问题var query (from j in db.Jobjoin c in db.Company on j.UserId equals c.Us

linq Distinct 去掉重复问题
var query = (from j in db.Job
  join c in db.Company on j.UserId equals c.UserId
  into cj
  from c in cj.DefaultIfEmpty()
  select new
  {
  UserId = c.UserId,
  CompanyName = c.CompanyName,
  Jobs = c.Jobs
  }).Distinct().AsEnumerable().Select(b => new Company() { UserId = b.UserId, CompanyName = b.CompanyName, Jobs = b.Jobs.ToList() });

提示:无法将“Distinct”操作应用于所指定参数的集合 ResultType。
参数名: argument

[解决办法]

探讨
没有 Jobs = c.Jobs 是可以的

[解决办法]
C# code
public class DataRowComparer : IEqualityComparer<Company>     {          public bool Equals(Company  t1, Company  t2)          {              return (t1.UserId == t2.UserId                   && t1.CompanyName == t2.CompanyName                 && t1.Jobs==t2.Jobs);          }          public int GetHashCode(Company  t)          {              return t.ToString().GetHashCode();          }      }  var query = (from j in db.Job  join c in db.Company on j.UserId equals c.UserId  into cj  from c in cj.DefaultIfEmpty()  select new Company    {    UserId = b.UserId,     CompanyName = b.CompanyName,     Jobs = b.Jobs.ToList()    }).Distinct(new DataRowComparer()); 

热点排行