Как написать это в C # Linq - PullRequest
       7

Как написать это в C # Linq

4 голосов
/ 23 февраля 2012

Я не профессионал в Linq, но пытаюсь понять.Как написать этот код (написанный на VB) на C #

Dim x = От p в db.YourClass _

Где p.fl1 = cn1 И p.f12 = cn2

Выберите _

sum1 = x.Sum (Функция (y) y.fl1), _

sum2 = x.Sum (Функция (y) y.fl2),_

sum3 = x.Sum (Function (y) y.fl3)

что я пытаюсь достичь, это

выберите сумму(fl1), sum (fl2), sum (fl3)

, где fl1 = cn1 и fl2 = cn2

Приведенный выше образец найден здесь

Ответы [ 3 ]

4 голосов
/ 23 февраля 2012
var x =
    from p in db.YourClass
    where p.fl1 == cn1 && p.fl2 == cn2
    select p;


var sum1 = x.Sum(y => t.fl1);
var sum2 = x.Sum(y => t.fl2);
var sum3 = x.Sum(y => t.fl3);
2 голосов
/ 23 февраля 2012
var x = from p in db.YourClass 
        where p.fl1 == cn1 && p.f12 == cn2
        select p;

  var sum1 = x.Sum(y=>y.fl1), 

  var sum2 = x.Sum(y=>y.fl2), 

  var sum3 = x.Sum(y=>y.fl3)

Редактировать: В одном запросе я думаю, что это может работать быстро:

var x = (from p in db.YourClass 

        select new 
        {
         s1 = db.YourClass.Where(y=> y.fl1 == cn1 && y.f12 == cn2).Sum(y=>y.fl1),
         s2 = db.YourClass.Where(y=> y.fl1 == cn1 && y.f12 == cn2).Sum(y=>y.fl2),
         s3 = db.YourClass.Where(y=> y.fl1 == cn1 && y.f12 == cn2).Sum(y=>y.fl3)
        }).First();

 int sum1 = x.s1, sum2 = x.s2, sum3 = x.s3;
1 голос
/ 23 февраля 2012

Вы можете использовать лямбда-выражение,

public class Sums
{
   public int Sum1{get;set;}
   public int Sum2{get;set;}
   public int Sum3{get;set;}
}

var list = db.YourClass.Where(x=>x.fl1==cn1 && x.f12==cn2).Select(y => 
                                new Sums{ 
                                    Sum1 = y.Sum(z=>z.fl1),
                                    Sum2 = y.Sum(z=>z.fl2),
                                    Sum3 = y.Sum(z=>z.fl3)
                                }).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...