使用空引用检查过滤值的最简单方法是什么。订单应该像“Active”, “重启”, “锁定”, “暂停”, “过期”, “禁用”, “撤销”
namespace ConsoleApplication1
{
class Program
{
private static void Main(string[] args)
{
var tempList = new List<string>
{
"Active",
"Reset",
"Locked",
"Suspended ",
"Expired",
"Disabled ",
"Revoked"
};
var list = new List<MyEntity>
{
new MyEntity() {MyValue = "Reset"},
new MyEntity() {MyValue = "Locked"},
new MyEntity() {MyValue = "Active"},
new MyEntity() {MyValue = "Expired"}
};
var item =
list.FirstOrDefault(x => x.MyValue));
}
}
public class MyEntity
{
public string MyValue { get; set; }
}
}
我需要做些什么才能根据值...过滤列表?
答案 0 :(得分:6)
听起来你想做一个OrderBy
,如果你想要首选的是Sam,那么Paul,然后是Jimmy,然后是Jeff,然后null
如果没有这些,那么你可以做到以下几点。
var listOfNames = new List<string> { "Sam", "Paul", "Jimmy", "Jeff" };
var item = list.Where(x => listOfNames.Contains(x.MyValue))
.OrderyBy(x => listOfName.IndexOf(x.MyValue))
.FirstOrDefault();
这将首先筛选出与您感兴趣的值不匹配的任何内容。然后根据他们在列表中的位置对它们进行排序,最后选择第一个或null
如果过滤器没有匹配。
此外,我只是假设MyValue
在这里string
,但如果您需要,您可以进行任何转换。