使用linq进行排序比较两个列表?

时间:2016-11-03 06:15:54

标签: c# linq

我有2个项目清单;

IEnumerable<Investigator> investigators = RepositoryContext.InvestigatorRep.GetInvestigators(site.Site.Id, out totalCount);

var NewInvestigators = base.ActivePage.Investigators;

我在调查员中有30个项目,在NewInvesigators中有20个项目,两个都有属性ID,InvId我需要匹配。

     var all = investigators.Where(b => crInvestigators.Any(a => a.InvestigatorId == b.Id));

我尝试了这个,但没有奏效 我想基于匹配这两个列表的Id创建一个新列表。如果Id匹配得到特定的调查员(基本上是基于NewInvesigators中存在的Id的研究者)。

我可以为每个人使用,但我想知道是否可以使用linq

在newinvestigator中我有一个对象,它有两个属性,InvestigatorId和Name。

在调查员中我有财产Id,City,country。 没有调查员名单中的姓名或调查员。

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

var result = investigators.Where(inv=>NewInvestigators.Any(ninv=>ninv.id == inv.investigatorId))
                          .OrderBy(inv=>inv.id);

获得相同结果的另一种方法是使用join

var result = from inv in investigators
             join ninv in NewInvestigators
             on inv.id equals ninv.investigatorId 
             order by inv.id
             select inv;