none
C# LINQ to DataSet два селекта RRS feed

  • Вопрос

  • Здравствуйте,
    Есть задача в одном запросе "вытащить" значения двух столбцов датасета. Иными словами, как вместо двух запросов типа

     

    query1 =
        (from
     row in
     ds.tab
         where
     row.name.Contains(strName)
         select
     row.par1).ToList();
    query2 =
        (from
     row in
     ds.tab
         where
     row.name.Contains(strName)
         select
     row.par2).ToList();
    Console.WriteLine("{0},{1},{2}"
    ,
         query1.Max(),query1.Count,
         query2.Sum());
    

     

    написать один, имея в виду, что структуры from и where идентичны, а по полю par2  нужна только сумма

    Спасибо заранее

    PS Забыл отметить, что главный критерий быстродействие

    • Перемещено Abolmasov Dmitry 15 марта 2011 г. 14:32 (От:Работа в среде Visual Studio)
    15 марта 2011 г. 11:10

Ответы

  • Если критично быстродействие - то лучше самому написать обход всех элементов и одновременный подсчет нужных данных, т.к. при у вас щас 1 проход это выборка элеметнов Contains(strName), потом идет 2ой проход по массиву - ищется Max(), и далее 3ий проход - считается Sum(). Если уберете вызов ToList(), то тогда останется 2 прохода для Max и Sum. Выбрать одним linq запросом сразу сумму и поле par1 не получится.


    Для связи [mail]
    • Помечено в качестве ответа abb269 15 марта 2011 г. 14:16
    15 марта 2011 г. 14:02