繁体   English   中英

使用Lambda表达式的子查询

[英]SubQuery using Lambda Expression

我正在使用LINQ子查询来获取数组中所有最小长度的单词。 我想使用Lambda表达式来做到这一点。

var names = new[] { "Tom", "Dick", "Harry", "Mary", "Jay" }.AsQueryable();
(
from n in names
where n.Length == names.Min (n2 => n2.Length)
select n
)

输出:汤姆,杰伊

谢谢,Prakhar

这将工作:

var minNames = names.Where(s => s.Length == names.Min(n=>n.Length));

但是它会评估列表中每个名称的最小长度( O(n*n)复杂度),因此会更好:

var min = names.Min(s => s.Length); //calc. this only once
var minNames = names.Where(s => s.Length == min);

对我来说,这个问题似乎有点含糊,但这是您要找的东西吗?

 names.Where (x => x.Length == names.Min (n2 => n2.Length));

这应该可以帮助您:

    var minNames = names.Where(c => c.Length == names.Min(n => n.Length))
            .ToArray();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM