xwr*_*ith 0 c# linq-to-entities .net-3.5
我已经开始在.NET 3.5中使用Linq-to-entities,而且我遇到了一个我可以在SQL中轻松实现的场景,但我对linq有很大的困难.我在SQL数据库中有一个包含三个字段的表,为了这个例子的目的,我将它们称为foo,bar和foo_index,并像这样填充它们:
大段引用
foo | 吧| 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
Run Code Online (Sandbox Code Playgroud)
我已经在C#中编写了一些linq-to-entities代码,但是我觉得有一个更加优雅的解决方案,而且我缺少一些可以使下面的内容更容易的概念.另外,有没有其他方法可以从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;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助或指导将不胜感激,谢谢!
我认为这应该有效:
var query = from item in db.T
where item.FOO == 555
group item by item.BAR into g
select new { Bar = g.Key, Max = g.Max(x => x.FOO_INDEX) };
Run Code Online (Sandbox Code Playgroud)
所以基本上你采用与SQL中相同的方法:对数据进行分组,然后获取组的密钥和组内的最大FOO_INDEX.
| 归档时间: |
|
| 查看次数: |
5393 次 |
| 最近记录: |