2015-09-16 5 views
0

Можно ли использовать OrderBy(). Then() в linq, для свойства string объекта с Duplicate Value. для примераLinq OrderBy Then with Duplicate item

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(); 
    } 
} 
+1

Да, в чем проблема, с которой вы столкнулись? –

+0

@ Rahul Singh, при запуске запроса i произошла эта ошибка «столбец был указан более одного раза в порядке по списку. Order by должен быть уникальным» –

+0

@MasoudBahrami Можете ли вы опубликовать весь запрос, я сомневаюсь, что вы указали столбец Name дважды по порядку? –

ответ

0

Возможно, я могу получить это право, но почему у вас есть эта строка параметра имя? Вы не используете его. Или вы хотите получить все записи с этим именем, а затем отсортировать их по имени и дате? Если вы хотите, то я думаю, что код будет работать для вас:

list.Where(t=> t.Name == name).OrderBy(t => t.Name).ThenBy(t => t.Date).ToList(); 

Другая проблема состоит в том, что вы установили DateTime.Now везде и критерии ThenBy не работает в этом случае.

Исправьте меня, если я где-то не прав. Буду рад помочь

+0

. Да, это имя для фильтра, и в некоторых случаях имя и дата равны. –

0

Пожалуйста, не Husitate, Используйте этот метод.

list.OrderBy(test => test.Name).ThenBy(test => test.Date).ThenBy(test => test.Id).ToList(); 
+0

Привет. Большое спасибо, ладно, я хорошо это проверю, но я не уверен, ваше решение можно решить. –