0

我正在尝试查看是否有一种方法可以构建一个 Linq 语句,该语句将根据元素中的可用属性进行选择,结果将是什么,尽管并非所有属性都始终可用。

例如,这将是一个“标准”元素:

<box left="2" right="2" />

但是,这也是完全有效的:

<box left="3" />

还有这个:

<box right="1.4" />

我想做的是有一个 Linq 语句,上面写着“如果左右都存在,则将它们相加并除以 2。如果只存在左边,则使用该值。如果只存在右边,则使用该值。”。我知道这可以通过一系列复杂的 If/Then 语句来完成,但我试图看看这是否可以在 Linq 中完成。

我已经尝试了一些事情,但是在返回值方面遇到了问题 - 如何返回正确的值。例如,以下返回值,但不一定是正确的:

dim center = from e in <box> Where e.@left IsNot Nothing _
AndAlso e.@right IsNot Nothing _
let g = ((CInt(e.@left)+CInt(e.@right)) /2) _
Or _
e.@left IsNot Nothing AndAlso e.@right Is Nothing _
let k = CInt(e.@left)

我尝试过使用 select 语句,但它并不完全有效。关于如何做到这一点的任何想法?

4

1 回答 1

2

使用If表达式:

Dim center = From e In <box> _
             Where If(e.@left IsNot Nothing AndAlso e.@right IsNot Nothing, _
                      (CInt(e.@left) + CInt(e.@right)) / 2, _
                      If (e.@left IsNot Nothing, _
                          CInt(e.@left), _
                          CInt(e.@right)))
于 2009-09-04T20:11:05.117 回答