我正在尝试查看是否有一种方法可以构建一个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语句,但它并没有完全正常工作。有关如何做到这一点的任何想法?
答案 0 :(得分: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)))