重申问题:
我有foo
Foo有很多嘶嘶声
Fizz有Foo
酒吧有一个嘶嘶声。
我想找到foo,它具有使用LINQ引用它的最高计数条的fizz。
如果linq与NHibernate.Linq兼容,那将是完美的。但那已经是另一回事了。
旧问题:
我知道 - 问题很简单。我一直在努力使用sql选择。
我有foo Foo有很多嘶嘶声 Fizzs有很多酒吧。
我想找到foo,它使用LINQ具有最高数量的条形码。
P.S。对不起要求做我的工作。
编辑:
该死......这是不同的。酒吧有嘶嘶声,嘶嘶声没有酒吧。 :/
答案 0 :(得分:3)
var foo = (from f in foos
from fz in f.Fizzs
let bCount = fz.Bars.Count()
orderby bCount descending
select f).First();
这不一定非常有效,尽管如果Bars是ICollection<Bar>
会有所帮助,因为这样可以使用Count属性而不是Count扩展方法。
但是,在这个例子中,我假设Bars是IEnumerable<Bar>
。
答案 1 :(得分:1)
var orderedByMaxNumOfBars =
from foo in foos
let maxNumOfBars = foo.Fizzes.Select(fizz => fizz.Bars.Count()).Max()
orderby maxNumOfBars descending
select foo;
var fooWithFizzWithMostBars = orderedByMaxNumOfBars.FirstOrDefault();
答案 2 :(得分:0)
这是一种方法:
var x = (from f in foos
orderby f.fizzs.SelectMany(fi => fi.bars).Count() descending
select f).First();
编辑:修复查询未返回正确的结果。