我有一個列表,其中包含一個整數列表和另一個列表,其中包含一個同時包含整數和字符串的類。基於另一個列表的內容排序列表
我想要做的是按字母順序對我的列表進行排序,首先將條目存在於第一個列表中。這裏是我的代碼和預期輸出:
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
var myList = new List<int>();
myList.Add(5);
myList.Add(15);
var myclasses = new List<MyClass>();
myclasses.Add(new MyClass {MyId = 8, MyString = "Entry1"});
myclasses.Add(new MyClass {MyId = 12, MyString = "Entry2"});
myclasses.Add(new MyClass {MyId = 1, MyString = "Entry3"});
myclasses.Add(new MyClass {MyId = 15, MyString = "Entry4"});
myclasses.Add(new MyClass {MyId = 9, MyString = "Entry5"});
myclasses.Add(new MyClass {MyId = 5, MyString = "Entry6"});
foreach (MyClass c in myclasses.OrderBy(z => myList.Contains(z.MyId)).ThenBy(z => z.MyString)) {
Console.WriteLine("{0} ==> {1}", c.MyId, c.MyString);
}
// I'm expecting this output:
//
// 15 ==> Entry4
// 5 ==> Entry6
// 8 ==> Entry1
// 12 ==> Entry2
// 1 ==> Entry3
// 9 ==> Entry5
}
public class MyClass {
public int MyId { get; set; }
public string MyString { get; set; }
}
}
正如你可以從我的預期的輸出看,我想Entry6
和Entry4
因爲它們出現在第一個列表中第一次出現。然後我只想要一個按字母排序的列表。我認爲我的LINQ聲明是正確的,但它沒有給我正確的結果。任何幫助,將不勝感激。