我正在使用LINQ子查询来获取数组中所有最小长度的单词.我想用Lambda Expression来做.
var names = new[] { "Tom", "Dick", "Harry", "Mary", "Jay" }.AsQueryable();
(
from n in names
where n.Length == names.Min (n2 => n2.Length)
select n
)
Run Code Online (Sandbox Code Playgroud)
输出:汤姆,杰伊
谢谢,Prakhar
这可行:
var minNames = names.Where(s => s.Length == names.Min(n=>n.Length));
Run Code Online (Sandbox Code Playgroud)
但它会评估列表中每个名称的最小长度(O(n*n)复杂性),因此这会更好:
var min = names.Min(s => s.Length); //calc. this only once
var minNames = names.Where(s => s.Length == min);
Run Code Online (Sandbox Code Playgroud)