twi*_*kes 2 c# linq lambda tuples
我有一个使用元组进行优化的 LINQ 查询。但是,我无法找到在参数中解包元组的有效语法,这似乎令人惊讶,因为 C# 确实支持解包元组,而其他支持 lambda 和元组的语言确实支持解包。
有没有办法在下面的表达式中利用解包而不是引用完整元组的属性?
shelves
.Select(kv => (kv.Key, kv.Value.Orders.Count))
.Where(tuple => tuple.Count > 0)
.OrderBy(tuple => tuple.Count)
.Select(tuple => tuple.Key);
Run Code Online (Sandbox Code Playgroud)
C# 支持元组解构,但在您的情况下不可能使用 lambda 参数。
你宣布一个不愿透露姓名的元组中Select,并且可以访问项目使用Item1,Item2等特性
shelves
.Select(kv => (kv.Key, kv.Value.Orders.Count))
.Where(tuple => tuple.Item2 > 0)
.OrderBy(tuple => tuple.Item2)
.Select(tuple => tuple.Item1);
Run Code Online (Sandbox Code Playgroud)
您也可以切换到命名元组语法
shelves
.Select(kv => (Key: kv.Key, Count: kv.Value.Orders.Count))
.Where(tuple => tuple.Count > 0)
.OrderBy(tuple => tuple.Count)
.Select(tuple => tuple.Key);
Run Code Online (Sandbox Code Playgroud)
或者甚至使用匿名类型,它不会使您与属性名称混淆(因为它使用与用于初始化它们的属性相同的名称)
shelves
.Select(kv => new { kv.Key, kv.Value.Orders.Count})
.Where(x => x.Count > 0)
.OrderBy(x => x.Count)
.Select(x => x.Key);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
520 次 |
| 最近记录: |