【发布时间】:2014-04-08 15:54:03
【问题描述】:
我有一个 Test 类型的列表
List<Test> testList = new List<Test>
{ new Test { TestName="gold", CriteriaOne = "sport", CriteriaTwo = "Outdoors" },
{ new Test { TestName="silver", CriteriaOne = "sport", CriteriaTwo = "Indoors" },
{ new Test { TestName="bronze", CriteriaOne = "activity", CriteriaTwo = "Water" },
{ new Test { TestName="gold", CriteriaOne = "activity", CriteriaTwo = "Outdoors" },
//some more tests ... };
我有每个条件的列表
// List of strings to order testListBy first.
List<String> criteriaOneOrder = new List<String> { "sport", "activity", "warmup", "other"};
//List of strings to order testListBy second.
List<String> criteriaTwoOrder = new List<String> { "OutDoors", "Indoors", "Water", "Other"};
我想首先根据 criteriaOneOrder 列表按类型测试列表排序,然后如果两个结果相同,即。一项以上的运动,然后将它们排列在第二个字符串上,这样户外运动就会排在室内运动之前。
我尝试使用 Lambda 表达式,利用 OrderyBy 函数和 IndexOf 来尝试重新排序列表,但到目前为止还没有成功。
testList = testList.OrderBy(t => criteriaOneOrder.IndexOf(t.CriteriaOne)).ToList()
有什么想法吗?
【问题讨论】: