通常在使用Linq时,我通常会使用Where或类似过滤掉空/空记录.但是,我需要在多个条件上订购一个列表,并按顺序保留列表中的所有项目.
以下内容仅.Dimension1.Count > 0
适用于列表中的所有项目
var orderedList = mList.Elements .OrderBy(x => x.Property1) .ThenBy(x => x.Property2) .ThenBy(x => x.Property3.Dimension1[0].Value2) .ToList();
如果有任何元素,Dimension1.Count == 0
那么我得到错误:
'指数超出范围.必须是非负数且小于集合的大小.
这是预期的,因为数组没有标注尺寸.
当列表包含有哪些项目时,有没有办法使这项工作.Dimension1.Count = 0
?
请注意,这Dimension1[0].Value2
是double类型.
你可以这样做:
var orderedList = mList.Elements.OrderBy(x => x.Property1) .ThenBy(x => x.Property2) .ThenBy(x => x.Property3.Dimension1.Count == 0 ? -1 : x.Property3.Dimension1[0].Value2) .ToList();
我假设这Value2
是一个整数.例如,如果它是一个字符串,您可以使用null
而不是-1
.
这个想法是当你Count
为0 时使用特殊值.