使用LINQ-to-NHibernate有什麼方法可以縮小FetchMany()
的返回值?LINQ-to-NHibernate的Where子句FetchMany?
考慮下面的類結構
public class Foo
{
public virtual int Id { get; set; }
public virtual IList<Bar> Bars { get; set; }
}
public class Bar
{
public virtual string Description { get; set; }
}
我怎樣才能做到這一點:
session.Query<Foo>()
.Where(foo => foo.Id > 30)
.FetchMany(foo =>
foo.Bars.Where(bar => bar.Description.StartsWith("x")));
和NHibernate將返回所有Foo的一個ID> 30,併爲那些Foo的所有附加酒吧的其中酒吧的描述以字母'x'開始?
我發現一些文章使用舊的QueryOver()
的東西,但我明確地想要使用NHibernate的LINQ提供程序。
任何想法?
更新
我想我需要澄清我想要的結果。
<Foo Id="1">
<Bar Description="x1"/>
<Bar Description="b1"/>
</Foo>
<Foo Id="31">
<Bar Description="x2"/>
<Bar Description="x3"/>
<Bar Description="b2"/>
</Foo>
<Foo Id="32">
<Bar Description="b3"/>
</Foo>
從上面我希望以下結果中列出的數據
<Foo Id="31">
<Bar Description="x2"/>
<Bar Description="x3"/>
</Foo>
<Foo Id="32"/>
附加Where子句應只在酒吧的工作!它不應該進一步縮小Foo的名單!只需減少FetchMany()
返回的內容即可。
它現在返回什麼? –
@GertArnold現在,查詢甚至不會編譯...如果我刪除第二個Where子句,它將返回所有Foo的一個Id> 30加上所有酒吧附加到他們每個人。我無法找到一種方法來對「FetchMany()」的調用返回的內容進行過濾。 –