读书人

linq Distinct 去掉重复有关问题

发布时间: 2012-01-28 22:06:13 作者: rapoo

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()); 

读书人网 >.NET

热点推荐