Linq OrderBy然后使用重复项

时间:2015-09-16 06:50:39

标签: c# sql .net linq sql-order-by

我可以在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();
    }
}

2 个答案:

答案 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();