通常在使用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();
Run Code Online (Sandbox Code Playgroud)
如果有任何元素,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();
Run Code Online (Sandbox Code Playgroud)
我假设这Value2是一个整数.例如,如果它是一个字符串,您可以使用null而不是-1.
这个想法是当你Count为0 时使用特殊值.