根据订单中的值过滤列表?

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 List "Sam", "Paul", "Jimmy", "Jeff" ; list 是一个动态列表,我无法控制它 感谢您的告知。顺便说一句,我遇到了问题,因为我认为你的答案更好。 @RahulChowdhury 如果此答案对您有用,那么您能否从您的问题中删除 linq-to-entities 标签,因为这不是(并且绝对不适用于)Linq To Entities。

以上是关于根据订单中的值过滤列表?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Java Stream 根据第二个列表中的值过滤列表

NetSuite Advanced PDF - 使用记录中的多选字段过滤项目表列表

如何根据文本框值过滤列表框值

同一视图中的 kohana 搜索过滤器

根据布尔值列表过滤列表

根据一对多关系的值对集合进行排序