【问题标题】: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 对吗?
  • 你不应该编辑你的问题作为解决方案。

标签: c# linq


【解决方案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。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 2021-06-17
  • 2020-07-01
  • 2013-09-11
  • 1970-01-01
  • 2022-01-27
  • 2023-03-13
相关资源
最近更新 更多