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


我需要的是按listTwo(如果存在)中的项目顺序订购listOne。因此,新列表将按此顺序排列;
   “汽车”,“苹果”,“狗”,“猫”

我想在LINQ中这样做,并且已经尝试过了;

var newList = from l1 in listOne
              join l2 in listTwo on l1 equals l2 in temp
              from nl temp.DefaultIfEmpty()
              select nl;


但是它返回null,因此显然我的Linq-Fu很弱。任何建议表示赞赏。

最佳答案

您需要listOne中来自listTwo的所有项目,然后是listOne中的其余项目?

var results = listTwo.Intersect(listOne).Union(listOne);
foreach (string r in results)
{
    Console.WriteLine(r);
}

07-24 14:10