2009-01-08 53 views

回答

16

是 - Contains

var desiredNames = new[] { "Jon", "Marc" }; 

var people = new[] 
{ 
    new { FirstName="Jon", Surname="Skeet" }, 
    new { FirstName="Marc", Surname="Gravell" }, 
    new { FirstName="Jeff", Surname="Atwood" } 
}; 

var matches = people.Where(person => desiredNames.Contains(person.FirstName)); 

foreach (var person in matches) 
{ 
    Console.WriteLine(person); 
} 

(在LINQ to SQL中,最终为 “IN” 查询)。

注意在LINQ到对象上面是不是真的很有效。你会用更好的联接:(这可能仍然可以用,当然点符号完成,但它最终被有些混乱)

var matches = from person in people 
       join name in desiredNames on person.FirstName equals name 
       select person; 

+0

谢谢!你的声誉在你之前;-) – 2009-01-08 11:12:01

0

我会去内蒙古加入这个上下文。如果我会使用contains,它会重复6次,尽管事实上只有两场比赛。我只是想在这里强调一下,我会去参加联盟而不是IN谓词。

var desiredNames = new[] { "Pankaj" }; 

var people = new[] 
{ 
    new { FirstName="Pankaj", Surname="Garg" }, 
    new { FirstName="Marc", Surname="Gravell" }, 
    new { FirstName="Jeff", Surname="Atwood" } 
}; 

var records = (from p in people join filtered in desiredNames on p.FirstName equals filtered select p.FirstName).ToList();