2013-09-13 3 views
0

У меня есть SQL-запрос Oracle, как показано ниже, и требуется, чтобы LINQ был равен.LINQ With Group By And rownum

SELECT ROWNUM rn, 
     tmp.* 
FROM (SELECT tbl.name, 
       SUM(tbl.debit) 
     FROM table1 tbl 
     GROUP BY tbl.name) 

Большое спасибо

ответ

0

Я думаю, что вы могли бы сделать что-то подобное, используя перегрузку Select используя index.

Здесь rn представляет это index, который является ... номером строки.

var result = <someWayToGetTable1>.GroupBy(m => m.Name) 
.Select(m => new { 
    name = m.Key, 
    allDebit = m.Sum(x => x.debit), 
}) 
.ToList() 
.Select((m, rn) => new { 
    m.name, 
    m.allDebit, 
    rn 
}); 

версия с частично не беглом синтаксисом

var queryable= from item in <Table1> 
       group item by item.name into g 
       select new { 
        name =m.Key, 
        allDebit = m.Sum(x => x.debit 
       } 
    var result = queryable.ToList() 
       .Select((g, rn) => new { 
         g.name, 
         g.allDebit 
         rn 
        }); 
+0

плз ответ в не метод цепочки. – ehsan

+0

Выбирает параметр 'Expression ', поддерживаемый провайдером oracle linq? –

+0

@lazyberezovsky Должен признаться, я не уверен в этом. Для эшана см. Waht, что вы можете сделать. Не все может быть сделано с помощью неявного синтаксиса (насколько я знаю). –

0

Я думаю, что вы хотите что-то вроде этого:

YourDataContext.tbls.GroupBy(a => a.name) 
.select((a, index) => new 
{ 
    rn = index, 
    name = a.Key, 
    debitSum = a.Sum(b => b.debit) 
}); 
+0

Я пытаюсь var model = (_db2.Persons.Select ((x, index) => new {rn = index + 1, col1 = x.Id})). ToList(); но теперь у меня есть эта ошибка: LINQ to Entities не распознает метод 'System.Linq.IQueryable'1, и этот метод не может быть переведен в выражение хранилища. – ehsan