gpt4 book ai didi

linq - 您可以在非表达式 linq 中压缩或使用自定义连接运算符吗?

转载 作者:行者123 更新时间:2023-12-04 06:36:05 24 4
gpt4 key购买 nike

我有多个序列,我想以更易读的方式压缩,以便我可以编写

a.Zip(b)

在查询语法中
From a in Foo1
Join b in Foo2

没有结果是交叉连接

或者
From a in Foo1
Zip b in Foo2

最佳答案

标准Zip方法允许您编写类似的内容(使用 C#):

from t in first.Zip(second, (f, s) => new { First = f, Second = s }
select ... t.First ... t.Second;

我认为这应该足够可读。您的问题似乎表明您希望能够创建自己的关键字,例如 zip并使用它扩展 C# 查询表达式。这在 C# 或 Visual Basic 中是不可能的(但我同意这在某种程度上会很好)。

通过一些努力,您可以重新定义标准 C# 查询构造的作用,以便 join会表现得像 zip (在这种情况下,不需要查询的 equals 部分,因此您会有很多语法干扰)。或许,您还可以重新定义 from条款。我没有尝试过,但我相信你可以得到类似的东西:
from f in first.Zip()
from s in second.AddToZip()
from t in second.AddToZip()
select ... f ... s ... t ...;

我写了一篇文章,描述了如何为 group by 进行重新定义。条款( Using custom grouping operator in LINQ ),所以这可以让您了解如何做到这一点。

(但老实说,我认为标准的 Zip 方法应该没问题。运算符的重新定义非常微妙。 group by 示例可能更有吸引力,因为使用方法分组更丑陋,但即使这样也处于边缘。. .)

关于linq - 您可以在非表达式 linq 中压缩或使用自定义连接运算符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4869143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com