在对对象的LINQ声明中 [英] In statement for LINQ to objects

查看:37
本文介绍了在对对象的LINQ声明中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

LINQ中是否有与对象等效的SQL IN语句?

Is there an equivalent of a SQL IN statement in LINQ to objects?

推荐答案

是-包含.

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"查询形式出现.)

(In LINQ to SQL this ends up as an "IN" query.)

请注意,在LINQ to Objects中,上述效果并不是很有效.加入联结会更好:

Note that in LINQ to Objects the above isn't really very efficient. You'd be better off with a join:

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

(当然仍然可以使用点符号来完成,但最终会变得更加混乱.)

(This could still be done with dot notation of course, but it ends up being somewhat messier.)

这篇关于在对对象的LINQ声明中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆