ILookup如何使用Where方法?

时间:2012-07-05 16:32:22

标签: c#

我的查询:

var myLookup = myList.ToLookUp(x=> new {x.Name, x.Job, x.Phone});

我正在尝试做什么:

x.Name可以包含作业字符串或作业列表的字符串,即"Programmer""QA, Programmer"

以下语句将循环通过可用的作业,并将其与我的查找中的内容匹配:

foreach(var j in jobs)
{
     foreach(var m in myLookup[new {j.Name, j.Job, j.Phone}])
     {
          //do whatever
     }
}

现在,这适用于任何未使用逗号设置的作业名称,所以我尝试了这个:

foreach(var j in jobs)
{
     foreach(var m in myLookup[new {j.Name, j.Job, j.Phone}].Where(x=>x.Name.Contains(j.Name))
     {
          //do whatever
     }
}

但这似乎仍然无效。它只是与其他方式完全匹配。

如何在查找中合并包含或Where?

2 个答案:

答案 0 :(得分:0)

我不确定但你可以在每个之前进行字符串操作: 类似于:j.Job.replace(',','');

答案 1 :(得分:0)

如果我理解正确,你需要像

这样的东西
string jobsToMatch = "Programmer,QA";
var relevantNames = jobsToMatch.Split(',');
var myLookup = 
    myList.Where(x => relevantNames.Contains(x.Name))
      .ToLookup(k => k.Job, x => new { x.Name, x.Job, x.Phone });