2011-09-02 44 views
2

我有一個LINQ查詢與整數拉ID值:LINQ新手問題爲2維的

var data = from s in BaseData 
      select new { s.Roid, s.Tid}; 

? data.ToArray() 
{<>f__AnonymousType0<int,int>[14]} 
    [0]: { Roid = 2384, Tid = 1 } 
    [1]: { Roid = 2384, Tid = 2 } 
    [2]: { Roid = 2384, Tid = 3 } 
    [3]: { Roid = 2385, Tid = 4 } 
    [4]: { Roid = 2385, Tid = 5 } 
    [5]: { Roid = 2385, Tid = 6 } 
    [6]: { Roid = 2386, Tid = 1 } 
    [7]: { Roid = 2386, Tid = 3 } 
    [8]: { Roid = 2386, Tid = 6 } 
    [9]: { Roid = 2386, Tid = 7 } 
    [10]: { Roid = 2387, Tid = 1 } 
    [11]: { Roid = 2387, Tid = 2 } 
    [12]: { Roid = 2387, Tid = 4 } 
    [13]: { Roid = 2387, Tid = 9 } 

我想要做的是查詢結果爲固醇設置,而只提取TID值。

所以我想查詢Roid = 2387的數據,它將返回我想要轉換爲數組的1,2,4,9。

是這樣的可能嗎?

// ***Edit*** 
var items = data.ToArray().Where(s => s.RepairOrderId == 2387); 
// gets me closer, but I still only want the Tid's 
// ***Edit*** 

回答

6
var tidsFromRoid = data.Where(x => x.Roid == 2387).Select(x => x.Tid); 

這將返回一個只包含對他們Roid == 2387子序列,然後從該序列中,它的每個元素投影到只是它Tid

請注意,如果您要使用這個數組,調用.ToArray()後:

var arrayOfTids = tidsFromRoid.ToArray(); 

如果你想從一開始就做到這一點(因爲也許你永遠不會關心其他Roid S),然後你做你原來的查詢:

var arrayOfTids = BaseData.Where(x => x.Roid == 2387).Select(x => x.Tid).ToArray(); 
0

使用查詢表達式的語法,這也可以寫如下。這仍應產生相同的IL:

int desiredRepairOrderId = 2387; 
var q = from e in data where e.Roid == desiredRepairOrderId select new {e.Tid}; 
var arrayOfResults = q.ToArray();