我一直在搜索Select和SelectMany之间的区别,但我还没有找到合适的答案。我需要学习使用LINQ to SQL时的差异,但我所找到的都是标准数组示例。

有人能提供一个LINQ到SQL的例子吗?


当前回答

select操作符用于从集合中选择值,SelectMany操作符用于从集合的集合(即嵌套集合)中选择值。

其他回答

我理解SelectMany工作起来像一个连接快捷方式。

所以你可以:

var orders = customers
             .Where(c => c.CustomerName == "Acme")
             .SelectMany(c => c.Orders);

SelectMany方法将IEnumerable<IEnumerable<T>>分解为IEnumerable<T>,就像共产主义一样,每个元素都以相同的方式表现(愚蠢的家伙拥有与天才相同的权利)。

var words = new [] { "a,b,c", "d,e", "f" };
var splitAndCombine = words.SelectMany(x => x.Split(','));
// returns { "a", "b", "c", "d", "e", "f" }

SelectMany()允许您以一种需要第二个Select()或循环的方式折叠多维序列。

更多细节请参见这篇博客文章。

var players = db.SoccerTeams.Where(c => c.Country == "Spain")
                            .SelectMany(c => c.players);

foreach(var player in players)
{
    Console.WriteLine(player.LastName);
}

De Gea 阿尔芭 科斯塔 别墅 Busquets

...

select操作符用于从集合中选择值,SelectMany操作符用于从集合的集合(即嵌套集合)中选择值。