linq C#查询是否需要使用集合操作?

uqcuzwp8  于 2023-06-19  发布在  C#
关注(0)|答案(1)|浏览(110)

当我在寻找一种方法来获得两个列表之间的差异时,我遇到了这个页面:Set operations (C#)
我发现,我可以使用Except方法。但是在这个代码示例中让我感到困惑的是:

string[] planets1 = { "Mercury", "Venus", "Earth", "Jupiter" };
string[] planets2 = { "Mercury", "Earth", "Mars", "Jupiter" };

IEnumerable<string> query = from planet in planets1.Except(planets2)
                            select planet;

foreach (var str in query)
{
    Console.WriteLine(str);
}

/* This code produces the following output:
 *
 * Venus
 */

就是这句话IEnumerable<string> query = from planet in planets1.Except(planets2) select planet;
考虑到我是C#的新手,我的问题是,您是否需要此查询来使用Except方法?这一行似乎做同样的事情:IEnumerable<string> query = planets1.Except(planets2);
我错过了什么吗?

6rqinv9w

6rqinv9w1#

您可以用两种方式编写LINQ
1.类似查询表达式的形式

IEnumerable<string> query = from planet in planets1.Except(planets2)
                             select planet;

1.方法链形式

IEnumerable<string> query = planets1.Except(planets2)
                                 .Select(planet => planet);

在查询表达式形式中,必须存在group子句或select子句,但在方法链形式中,不需要以select方法结束。
这两段代码都返回IEnumerable<string[]>

planets1.Except(planets2)

和/或

planets1.Except(planets2).Select(planet => planet)

相关问题