如何使用Silverlight中的另一个可观察集合对一个可观察集合进行排序?

时间:2013-01-04 10:24:02

标签: c# silverlight

我有一个名为“A”的字符串可观察集合,其中包含一些值。另一个名为“B”的字符串可观察集合包含一些值。

“A”有13个值,“B”有5个值。 “A”包含“B”值,但顺序不同。我希望“A”中的“B”值在组合框中获得第一优先权。

所以我要做的事情..写一些linq查询。 请提出一些想法。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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));