1
string[] listOne = new string[] { "dog", "cat", "car", "apple"};
string[] listTwo = new string[] { "car", "apple"};

必要なのはlistOne、(存在する場合)のアイテムの順序で注文することlistTwoです。したがって、新しいリストは次の順序になります。

「車」「りんご」「犬」「猫」

4

6 に答える 6

0

これは機能しますが、もっとうまくできると感じています:

var result=
    from item in listOne
    let existsInListTwo=listTwo.Contains(item)
    let positionInListTwo=Array.IndexOf(listTwo, item)
    orderby !existsInListTwo, positionInListTwo
    select new {
        Item=item,
        position=positionInListTwo,
        exists=existsInListTwo
    };

編集:これとDamithのアプローチを組み合わせて使用​​すると、これはもう少し読みやすくなります:

var result=
    listOne.OrderBy(i => !listTwo.Contains(i))
           .ThenBy(i => Array.IndexOf(listTwo, i))
           .ToList();
于 2013-05-27T03:51:17.380 に答える