powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите с Linq-запросом
18 сообщений из 18, страница 1 из 1
Помогите с Linq-запросом
    #37330152
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, есть такой запрос:
Код: plaintext
IEnumerable<string[]> t = from с in File.ReadAllLines(filename, Encoding.GetEncoding(1251)).Take(1) select с.Split('\t')
Как мне получить результат запроса не типа IEnumerable<string[]> , а IEnumerable<string> ?
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37330229
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rsolanovЗдравствуйте, есть такой запрос:
Код: plaintext
IEnumerable<string[]> t = from с in File.ReadAllLines(filename, Encoding.GetEncoding(1251)).Take(1) select с.Split('\t')
Как мне получить результат запроса не типа IEnumerable<string[]> , а IEnumerable<string> ?
Уже разобрался, вот:
Код: plaintext
IEnumerable<string> t = (from с in File.ReadAllLines(filename, Encoding.GetEncoding(1251)).Take(1) select с.Split('\t')).First()
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37330838
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не правильный подход, наод использовать SelectMany
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37330922
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stimpiне правильный подход, наод использовать SelectMany

+100500
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37330967
няка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а мож ему именно фёст нужен был
хотя в условии об этом не говорилось
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37335491
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я еще ни разу не пользовался SelectMany, буду разбираться...
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37335508
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще вопросик:
Есть такой запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
IEnumerable<LogOrder> ResultTables = from a in
                                                       (from c in File.ReadAllLines(filename, Encoding.GetEncoding(1251)) 
                                                        select c.Split('\t').ToList())
                                                 where (a.Count == 7) && (a[6] == "Transaction ORDER completed successfully.")
                                                 select new LogOrder { 
                                                                            INDEX                     = ???
                                                                            ORDERTIME                 = a[0].Substring(11, 8), 
                                                                            SECCODE                   = a[5].Substring(a[5].IndexOf(" ") + 6, 12),
                                                                            BrokerRefWithoutSeparator = a[5].Contains("-") ? a[5].Substring(a[5].LastIndexOf("/") - 9, 9) : a[5].Substring(a[5].LastIndexOf("/") - 5, 5)
                                                                     };
Тут в каждом новом экземпляре LogOrder необходимо передавать текущий индекс в коллекции. Как можно узнать этот индекс?
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37335534
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
var i = new[] {7,8,3,1,4,6,8,9};

            foreach (var val in i.Select((num, index) => new { num, index }).OrderBy(val => val.num).ToArray())
                Console.WriteLine("{0}: {1}", val.index, val.num);
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37335565
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stimpi
Код: plaintext
1.
2.
3.
var i = new[] {7,8,3,1,4,6,8,9};

            foreach (var val in i.Select((num, index) => new { num, index }).OrderBy(val => val.num).ToArray())
                Console.WriteLine("{0}: {1}", val.index, val.num);

А как можно узнать индекс именно в моем примере?
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37335603
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rsolanov,

Код: plaintext
var col = (from v in i select v).Select((num, index) => new {num, index}).OrderBy(val => val.num).ToArray();

ваш "сложный" линку остается как есть, обернутый в селект.
Насколько мне известно аналога нет для вашего способа.
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37335803
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо, все получилось:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
            IEnumerable<LogOrder> ResultTables = (from a in
                                                     (from c in File.ReadAllLines(filename, Encoding.GetEncoding(1251))
                                                      select c.Split('\t').ToList())
                                                  where (a.Count == 7) && (a[6] == "Transaction ORDER completed successfully.")
                                                  select a).Select((ord, index) => new LogOrder {
                                                                                                      INDEX = (index + 1).ToString(),
                                                                                                      ORDERTIME = ord[0].Substring(11, 8),
                                                                                                      SECCODE = ord[5].Substring(ord[5].IndexOf(" ") + 6, 12),
                                                                                                      BrokerRefWithoutSeparator = ord[5].Contains("-") ? ord[5].Substring(ord[5].LastIndexOf("/") - 9, 9) : ord[5].Substring(ord[5].LastIndexOf("/") - 5, 5)
                                                                                                 });
Только я не до конца уяснил по какому принципу все-же это работает:
Код: plaintext
var col = (from v in i select v).Select((num, index) => new {num, index})
Поясните пожалуйста, как это работает
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37335882
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
from v in i select v //декларативно описать что при выборке данных взять из коллекции i значение и получить при этом типизированный IEnumerable<T>
//но данные пока не выбираются
.Select((num, index) => new {num, index}) //декларативно описать выборку данных где вернуть для каждого значения из предыдущего запроса значение и его индекс
// где индекс является порядковым номером при выборке, без условия ордера порядок возврата будет на совести Linq
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37335904
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stimpi
Код: plaintext
1.
2.
3.
4.
from v in i select v //декларативно описать что при выборке данных взять из коллекции i значение и получить при этом типизированный IEnumerable<T>
//но данные пока не выбираются
.Select((num, index) => new {num, index}) //декларативно описать выборку данных где вернуть для каждого значения из предыдущего запроса значение и его индекс
// где индекс является порядковым номером при выборке, без условия ордера порядок возврата будет на совести Linq
Проверил, значения параметра "index" идут в таком же порядке, что и строки в File.ReadAllLines(filename, Encoding.GetEncoding(1251)). Это крайне важно и это работает. Только не понимаю как параметр "index" становится порядковым индексом.
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37336020
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rsolanov,

посмотрите ILdasm, что генерит линку (нет времени посмотреть самому, но генерит наверное примерно следующее)
Код: plaintext
1.
2.
3.
4.
var array = list.ToArray();
for(int i=0;i<0; ++i)
{
func(array[i], i);
}
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37336039
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гг IL код говорит что там вообще замыкание )
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37336369
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stimpirsolanov,

Код: plaintext
var col = (from v in i select v).Select((num, index) => new {num, index}).OrderBy(val => val.num).ToArray();

ваш "сложный" линку остается как есть, обернутый в селект.
Насколько мне известно аналога нет для вашего способа.
вот зачем так усложнять, кому нужны эти from ... select ...
Код: plaintext
var col = i.Select((num, index) => new {num, index}).OrderBy(val => val.num).ToArray();
...
Рейтинг: 0 / 0
Помогите с Linq-запросом
    #37336753
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зы,

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


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