5
LINQ到对象中是否有等价的SQL IN语句?在LINQ到对象的声明中
LINQ到对象中是否有等价的SQL IN语句?在LINQ到对象的声明中
是 - 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;
我会去内蒙古加入这个上下文。如果我会使用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();
谢谢!你的声誉在你之前;-) – 2009-01-08 11:12:01