我可以在linq中使用OrderBy()。Then(),在具有Duplicate Value的实体的字符串属性上。 例如
public class Test
{
public Guid Id{get;set;}
public string Name{get;set;}
public DateTime Date{get;set;}
}
我想根据名称(可以是重复)订购此测试实体列表,然后使用日期对结果进行排序。
例如
public class Test
{
public Guid Id { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
}
public class TestLinq
{
private IList<Test> list;
public TestLinq()
{
var dateTime = DateTime.Now;
list = new List<Test>
{
new Test {Id = Guid.NewGuid(), Name = "Masoud", Date = dateTime},
new Test {Id = Guid.NewGuid(), Name = "Bahrami", Date = dateTime},
new Test {Id = Guid.NewGuid(), Name = "Ali", Date = DateTime.Now},
new Test {Id = Guid.NewGuid(), Name = "hasan", Date = DateTime.Now},
new Test {Id = Guid.NewGuid(), Name = "Masoud", Date = DateTime.Now},
new Test {Id = Guid.NewGuid(), Name = "Bahrami", Date = DateTime.Now},
};
}
public List<Test> Get(string name)
{
return list.OrderBy(test => test.Name).ThenBy(test => test.Date).ToList();
}
}
答案 0 :(得分:0)
可能我能说得对,但为什么你有这个字符串名称参数?你没有使用它。或者您想获得具有此名称的所有记录,然后按名称和日期对它们进行排序? 如果你想要这个,那么我认为代码适合你:
list.Where(t=> t.Name == name).OrderBy(t => t.Name).ThenBy(t => t.Date).ToList();
另一个问题是你将DateTime.Now设置为无处不在,然后在这种情况下,条件不起作用。
如果我在某处错了,请纠正我。我很乐意帮助
答案 1 :(得分:0)
请不要犹豫,请使用此方法。
list.OrderBy(test => test.Name).ThenBy(test => test.Date).ThenBy(test => test.Id).ToList();