Я начал использовать Linq-to-entity с .NET 3.5 и столкнулся со сценарием, с которым я могу очень легко справиться с SQL, но у меня большие трудности с linq.
У меня есть таблица в базе данных SQL с тремя полями, для целей этого примера я назову их foo, bar и foo_index и заполню их так:
Blockquote
фу | бар | foo_index
555 101 1
555 101 2
555 101 3
555 101 4
555 101 5
Чтобы узнать, какой бар находится в максимуме foo_index, где foo = 555, SQL равен
SELECT bar, max(foo_index) as max_foo_index
FROM T
WHERE foo=555
GROUP BY bar
Я написал некоторый код linq-to-entity в C #, который работает, но у меня есть ощущение, что существует гораздо более изящное решение, и я упускаю некоторую концепцию, которая значительно облегчила бы следующее. Кроме того, есть ли другой способ, кроме foreach, чтобы получить данные из VAR?
db_entity db = new db_entity();
var q =
from table in db.T
where table.FOO == 555
select new { table.BAR, table.FOO_INDEX };
var q2 =
from t2 in q
where t2.FOO_INDEX == table.Max(r => r.FOO_INDEX)
select new { t2.BAR };
int result = 0;
foreach (var record in q2}
{
result = record.BAR.Value;
}
Любая помощь или руководство будут оценены, спасибо!