2013-01-04 138 views
3

我有一個名爲「A」的字符串可觀察集合包含一些值。另一個名爲「B」的字符串可觀察集合包含一些值。 「A」有13個值,「B」有5個值。「A」包含「B」值,但順序不同。我希望「A」中的「B」值在combobox.so中有第一優先權。 .write一些linq query.pls提供一些想法如何使用Silverlight中的另一個可觀察集合對一個可觀察集合進行排序

+0

什麼收藏這兩種勢必組合框?目前還不清楚,在「優先考慮」下你的意思是什麼。 – Dennis

+0

@丹尼斯我有兩個組合框是從位置和其他是location.to位置可觀察的收集項目包含位置items.i要從位置項目的頂部到位置可觀察收藏。 – nichu09

回答

1

我沒有我的IDE方便,但這樣的事情應該這樣做。

這個假設兩個集合中存在相同的實例。

var sortedA = observableA.OrderBy(item=>observableB.Contains(item) ? 0 : 1); 

如果他們是不一樣的情況下,你想要的屬性比較如name你也可以做到。

var sortedA = observableA.OrderBy(item=>observableB.Any(item2 => item2.Name == item.Name) ? 0 : 1); 
+0

感謝男人......其工作.. – nichu09

+0

嗨.. @ richard ..我沒有那麼多的經驗linq.so根據第一個條件,如果項目呈現它返回「0」否則「1」。這是什麼0和1.是否是真的或假的東西..你可以解釋一點點..?提前感謝 – nichu09

+1

它是由1或0排序 - 如果它是更高的優先級,那麼它的排序順序爲0(把它放在頂部)如果它的優先級較低(不在第二個集合中),那麼它的排序索引是1,出現在具有0排序索引的排序索引之後。 :) –

1
var a = "1,2,3,4,5,6,7,8,9,10,11,12,13".Split(',').ToList(); 
var b = "7,8,9,10,11".Split(',').ToList(); 

var c = a.OrderByDescending(x => b.IndexOf(x));