更好的LINQ查询根据条件设置属性值

时间:2015-10-16 15:48:44

标签: c# performance linq

我在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随着条件的增长而增长,是否有更好的方法将多个查询替换为单个查询

1 个答案:

答案 0 :(得分:0)

也许这样的事情是你想要做的? 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);
            }
        }
    }
}
相关问题