powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ задачка
6 сообщений из 6, страница 1 из 1
LINQ задачка
    #37569577
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
string[] fruits = { "apple", "banana", "mango", "orange", 
                      "passionfruit", "grape" };

var query =
    fruits.Select((fruit, index) =>
                      new { index,  fruit})

;

Вот допустим, есть такая задачка.
пронумировали фрукты.
А как теперь можно сделать так, чтоб содержало:
автор"1,2", "apple, banana"
"3,4", "mango, orange"
"5,6", "passionfruit, grape"

???
---------------------------------------------------------
SET @@verSION = 'Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 6.0 (Build 6002: Service Pack 2) '
...
Рейтинг: 0 / 0
LINQ задачка
    #37569579
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто вчера от нечего делать Линкьил, и придумал себе простую задачку. Задачка оказалась не простой.
Долго протупил над Aggregate, и над списком методов IEnumerable
...
Рейтинг: 0 / 0
LINQ задачка
    #37569880
Коляныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_Kartmann,

мож я что-то не понял, но вроде бы просто сгруппировать нужно по остатку от деления на два

Код: c#
1.
2.
3.
4.
5.
6.
7.
            var another = from x in query
                          group x by x.index / 2 into groupped
                          select new
                          {
                              nums = groupped.Select(x => x.index + 1),
                              fruits = groupped.Select(x => x.fruit)
                          };
...
Рейтинг: 0 / 0
LINQ задачка
    #37569992
Коляныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть просто по делению на два и округлению вниз, в смысле не по остатку
...
Рейтинг: 0 / 0
LINQ задачка
    #37569998
Коляныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или если их именно в строчку надо слепить через запятые, то


Код: c#
1.
2.
3.
4.
5.
6.
            var concat = from a in another
                         select new
                         {
                             indexes = a.nums.Aggregate("", (acc, x) => acc + (acc == "" ? "" : ",") + x),
                             fruits = a.fruits.Aggregate("", (acc, x) => acc + (acc == "" ? "" : ",") + x)
                         };
...
Рейтинг: 0 / 0
LINQ задачка
    #37570317
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
var query = fruits.Select((fruit, index) => new { ind = index - index % 2, index, fruit }).GroupBy(d => d.ind);



P.S. Разложить в строчку можно через аггрегат, как уже сказали.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ задачка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]