1

我试图找到答案,但在谷歌中找不到答案。可能没有搜索正确的术语,所以我想在这里问。

以下返回我的所有联系人,而不是与发送的 adjusterType 相同的联系人。

var contacts = from c in session.Linq<Contact>() select c;
contacts.Where(c => c.ContactAdjuster.AdjusterType == adjusterType);

以下确实返回了预期的结果。它只返回符合adjusterType 的联系人。我相信这是我对 LINQ 缺乏了解。

var contacts = from c in session.Linq<Contact>() select c;
contacts  = contacts.Where(c => c.ContactAdjuster.AdjusterType == adjusterType);

提前致谢。

4

2 回答 2

2

在您的情况下,Where 子句返回一个 IEnumerable。这是标准的 LiNQ 和 C# 行为。它不是修改您的集合,而是根据您的 where 子句返回一个新集合。

我想 NHibernate LiNQ 应该模仿这个。

于 2009-10-02T18:50:03.980 回答
2

CatZ 是绝对正确的,您没有修改“联系人”集合/可枚举,您正在根据现有创建一个新的,这就是您的第二个语句有效的原因。

但不是只是重复 CatZ 语句,这里有一个小插件:

不过,您可以将其写在一个语句中

var contacts = 
    from c in session.Linq<Contact>() 
    where c.ContactAdjuster.AdjusterType == adjusterType
    select c;

或者干脆

var contacts = session.Linq<Contact>().Where(c => c.ContactAdjuster.AdjusterType == adjusterType);
于 2009-10-02T19:12:50.640 回答