2015-10-16 46 views
0

的屬性值我有以下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的增長爲條件的增長,有沒有更好的辦法來替代多個查詢單查詢

+2

不知道你正在嘗試做的,但'list1.FirstOrDefault(W => w.Code == 1).IsEditable = List2.Any(W1 => w1.value == 「1」); '仍然可以得到Null引用異常:) ' –

+2

請注意.FirstOrDefault可以返回null,因此您可能會遇到空值ref異常。 –

+0

你需要解釋你想要達到的目標。 – markpsmith

回答

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); 
      } 
     } 
    } 
}