Как считать / суммировать в лямбда-выражении - PullRequest
1 голос
/ 29 апреля 2010

Мне нужно преобразовать следующий запрос TSQL в лямбду, и я застрял на счетчике и сумме. Я знаю, что могу добавить .Count () и .Sum в конце выражения - но как мне получить значение как часть выражения?

T-SQL:

select b.pk, b.CreateTime, b.StartTime, b.endTime, count(a.rowid) as total, 
  sum(case when ItemStatus = 'success' then 1 else 0 end) as Sucess from... group by...

Мое выражение до сих пор:

var results = from context1 in dmbl1 join context2 in dmbl2 on context1.BatchLog_ID equals context2.pk
                      select new
                      {
                          CycleID = context2.pk,
                          CreateDateTime = context2.CreateDateTime,
                          StartTime = context2.startTime,
                          endTime = context2.endTime,
                          total = context1.RowID.   <<<<< This is where I need Countof
                          Success = <<< This is where I need Sumof
                      };

1 Ответ

1 голос
/ 29 апреля 2010

Я понял это, но не уверен, что это лучший способ справиться;

Если кто-то найдет лучший способ - то есть сделать это одним выражением, пожалуйста, ответьте !!!

Я отправил свои функции calc в методы;

var results = from Context1 in dmbl1.Table
                      join Context2 in dmbl2.batchLogs on Context1.BatchLog_ID equals Context2.pk
                      select new
                      {
                          CycleID = Context2.pk,
                          CreateDateTime = Context2.CreateDateTime,
                          StartTime = Context2.startTime,
                          endTime = Context2.endTime
                      };


        foreach (var result in results)
        {
            BatchJob bj = new BatchJob();
            bj.CreationDate = result.CreateDateTime;
            bj.CycleID = result.CycleID;
            bj.EndTime = result.endTime;
            bj.StartTime = result.StartTime;
        // From Here I called Methods that returned my counts 
            bj.TotalProcessed = Total(result.CycleID);
            bj.ProcessedSuccess = Success(result.CycleID);
            bj.ProcessedFailed = Failure(result.CycleID);
            batchjobs.Add(bj);
        }

private Int32 Success (int ID) {…

        var success = (from blah in context1.table
                      where context1.ID == ID 
                      && context1.ItemStatus == "success"
                      select S context1.ItemStatus
                      ).Count();


        return success;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...