Код: Выделить всё
#No Detail Entry Number Rate
1 Carpool at 5$ C 1 5
Carpool at 5$ H 2 5
2 Played Cricket at 2$ X 1 2
Played Cricket at 2$ O 2 2
3 Done something at 4$ "" 0 4
4 Done something else at 9$ M 1 9
5 Watched movie at 6$ B 1 6
Watched movie at 6$ Z 2 6
- Ни один столбец не доступен в списке. Я упомянул здесь только для того, чтобы подробнее рассказать о записях.
- 1,2,5 — это специальные клубные записи, и их следует сортировать вместе по записям, для которых в столбце номера установлено значение 1. Эти записи имеют специализацию, которая их скорость и описание будут одинаковыми, а номер будет 1 и 2.
- Возможно, что могут быть некоторые записи с пустыми значениями записей, для таких записей номер будет установлен на 0. Например, 3
- Возможно, что некоторые записи имеют одно значение записи и не будут иметь пары, а столбец номера для таких записей будет установлен на 1, и их не будет. это любая запись в списке, которая имеет одинаковое описание и рейтинг, а в столбце «Номер» установлено значение 2. Например, #4.
- При сортировке клубных записей в столбце «Запись» учитывайте только запись с номером, установленным на 1, и другая запись должна идти рядом.
Мое решение:
Код: Выделить всё
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication1
{
internal class Data
{
public string Detail { get; set; }
public string Entry { get; set; }
public int Number { get; set; }
public int Rate { get; set; }
}
internal class Program
{
private static void Main(string[] args)
{
List entries = new List();
// Clubbed entry...While sorting only consider entry with Number set to 1. They will have same rate and Detail.
entries.Add(new Data() { Detail = "Carpool at 5$", Entry = "C", Number = 1, Rate = 5 });
entries.Add(new Data() { Detail = "Carpool at 5$", Entry = "H", Number = 2, Rate = 5 });
// Clubbed entry
entries.Add(new Data() { Detail = "Played Cricket at 2$", Entry = "X", Number = 1, Rate = 2 });
entries.Add(new Data() { Detail = "Played Cricket at 2$", Entry = "O", Number = 2, Rate = 2 });
// entry which have empty Entry value such entries will have Number set to 0
entries.Add(new Data() { Detail = "Done something at 4$", Entry = "", Number = 0, Rate = 4 });
// entry which will not have an pair and Number column for such entries would be set to 1 and
// there wouldn't be any entry in list which have same detail and rate with Number column set to 2
entries.Add(new Data() { Detail = "Done something else at 9$", Entry = "M", Number = 1, Rate = 9 });
// Clubbed entry
entries.Add(new Data() { Detail = "Watched movie at 6$", Entry = "B", Number = 1, Rate = 6 });
entries.Add(new Data() { Detail = "Watched movie at 6$", Entry = "Z", Number = 2, Rate = 6 });
// Sorting on Entry Column
var sortedList = entries.GroupBy(x => x.Detail).OrderBy(x => x.FirstOrDefault(y => y.Number x).ToList();
}
}
}
Код: Выделить всё
Detail Entry Number Rate
Done something at 4$ "" 0 4
Watched movie at 6$ B 1 6
Watched movie at 6$ Z 2 6
Carpool at 5$ C 1 5
Carpool at 5$ H 2 5
Done something else at 9$ M 1 9
Played Cricket at 2$ X 1 2
Played Cricket at 2$ O 2 2
- Мое решение не учитывает оценку и группирует только на основе детализации , можно
его изменить? - Можно ли это сделать с помощью IComparer, поскольку в остальной части моего кода сортировка выполнялась с помощью IComparer?
Подробнее здесь: https://stackoverflow.com/questions/525 ... conditions
Мобильная версия