正如您所说的“按优先顺序”,听起来您有办法对列表进行排序。不确定这个优先级是什么,但对于示例,我们假设它按“Desc”的字母顺序排列。我们还假设(为简单起见)这些值在字典中。鉴于此,您可以这样编写 Linq 语句...
dict.OrderBy(o => o.Key).FirstOrDefault(d => d != null);
例如...
Dictionary<string,string> dict = new Dictionary<string,string>();
dict.Add("BNo", "12");
dict.Add("CNo", null);
dict.Add("ANo", null);
dict.Add("DNo", null);
dict.Add("ENo", "16");
Debug.WriteLine(dict.OrderBy(o => o.Key).FirstOrDefault(d => d.Value != null));
这将返回第一个非空值。如果所有值都为 null,则返回 null。
这里可能有一些不正确的假设,但 OrderBy 和 FirstOrDefault 应该能够以任何必要的方式使用以实现您的目标。唯一需要更改的是“o.Key”和“d.Value”来引用您的实际属性。
例如,如果此信息在这样的类中...
class Info
{
public string Desc { get; set; }
public int? Number { get; set; }
}
你有一个清单,比如......
List<Info> info = new List<Info>();
那你可以写...
var returnValue = info.OrderBy(o => o.Desc).FirstOrDefault(d => d.Number.HasValue);