根据订单中的值过滤列表?
Posted
技术标签:
【中文标题】根据订单中的值过滤列表?【英文标题】:Filter a list based on value in an order? 【发布时间】:2015-12-18 19:28:33 【问题描述】:使用空引用检查过滤值的最简单方法是什么。顺序应该类似于“活动”, “重启”, “锁定”, “暂停 ”, “已到期”, “残疾”, “撤销”
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;
我需要做什么才能根据值过滤列表...
【问题讨论】:
如果列表中没有MyValue
为“A”的项目,那么只选择一个MyValue
为“B”的项目?还有MyValue
的确切类型是什么?
var 过滤 = list.Sort().FirstOrDefault();应该做的伎俩
@juharr 你是对的
好的,如果没有 A、B、C 或 D,那么您想要 null
对吗?
你不应该编辑你的问题作为解决方案。
【参考方案1】:
听起来您想做一个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
,但如果您需要,您可以进行任何需要的转换。
【讨论】:
感谢您的回答。实际上 var listOfNames = new Listlinq-to-entities
标签,因为这不是(并且绝对不适用于)Linq To Entities。以上是关于根据订单中的值过滤列表?的主要内容,如果未能解决你的问题,请参考以下文章