更好的LINQ查询基于条件设置属性值

本文关键字:条件 设置 属性 LINQ 查询 于条件 更好 | 更新日期: 2023-09-27 18:18:05

我在LINQ下面有,

Class class1
{
   public int Code {get; set;}
   public bool IsEditable {get; set;}
}
Class class2
{
   public string value {get; set;}
}
var list1 = LoadList(); // List<Class1>
var list2 = LoadList2();// List<Class2>
list1.Where(w => w.Code == 1).FirstOrDefault().IsEditable = List2.Where(w1 => w1.value == "one").Any();
list1.Where(w => w.Code == 2).FirstOrDefault().IsEditable = List2.Where(w1 => w1.value == "two").Any();

我的linq随着条件的增长而增长,是否有更好的方法将多个查询替换为单个查询

更好的LINQ查询基于条件设置属性值

也许这就是您想要做的事情?其中dictionary为您映射值

using System.Collections.Generic;
using System.Linq;
namespace MyNamespace
{
    class Class1
    {
        public int Code { get; set; }
        public bool IsEditable { get; set; }
    }
    class Class2
    {
        public string Value { get; set; }
    }
    class Program
    {
        static void Main()
        {
            var dictionary = new Dictionary<int, string>
            {
                {1, "one"}, 
                {2, "two"}
                // ...
            };
            var list1 = new List<Class1>();
            // add stuff to list 1
            var list2 = new List<Class2>();
            // add stuff to list 2
            foreach (var pair in dictionary)
            {
                list1.First(w => w.Code == pair.Key).IsEditable = list2.Any(w1 => w1.Value == pair.Value);
            }
        }
    }
}