文字列型のIEnumerableがあり、デフォルト値と修正順序があります。ランダムな順序の値を持つタイプモジュールのリストがあります。Moduleタイプの一意のオブジェクトのリストを1つ作成したいと思います。以下のコードで得られるのは、String型の一意のオブジェクトの1つのリストです。
誰かがこれに関するトリックを知っていますか?
static void Main(string[] args) {
List<Module> moduleList = new List<Module>() {
new Module{ ModuleId = 1, ModuleType = "world"},
new Module{ ModuleId = 2, ModuleType = "wayne"},
new Module{ ModuleId = 3, ModuleType = "hallo"},
new Module{ ModuleId = 4, ModuleType = "tes"},
new Module{ ModuleId = 5, ModuleType = "mi"},
new Module{ ModuleId = 6, ModuleType = "haha"},
new Module{ ModuleId = 7, ModuleType = "pipi"},
new Module{ ModuleId = 8, ModuleType = "bla"},
};
// This result is fine that the list is unified and the predefined
// values order is not changed: bla, tes, mi
// BUT I need to return a query with Module objects
var query = GetDefaultValues().Union(moduleList.Select(t => t.ModuleType));
}
private static IEnumerable<string> GetDefaultValues() {
yield return "bla";
yield return "tes";
yield return "mi";
}
すべてのラムダで新しいModule()を実行し、値をコピーすることは私にとってオプションではありません。
アップデート:
必要な出力:
モジュールのリスト:
new Module{ ModuleId = 8, ModuleType = "bla"},
new Module{ ModuleId = 4, ModuleType = "tes"},
new Module{ ModuleId = 5, ModuleType = "mi"},
new Module{ ModuleId = 1, ModuleType = "world"},
new Module{ ModuleId = 2, ModuleType = "wayne"},
new Module{ ModuleId = 3, ModuleType = "hallo"},
new Module{ ModuleId = 6, ModuleType = "haha"},
new Module{ ModuleId = 7, ModuleType = "pipi"},