2010-05-19 33 views
2

我有一个类。列表<T> .SelectMany(),Linq和lambda

public class MedicalRequest 
{ 
    private int id 
    private IList<MedicalDays> Days 
    private string MedicalUser 
    ... 
} 

和另一

public class MedicalDays 
{ 
    private int id; 
    private DateTime? day 
    private MedicalRequest request 
    ... 
} 

我使用NHibernate的时间跨度内返回所有MedicalDays的列表。我想这样做到这样的结果列表

//nhibernate query 
IList<MedicalDays> days = daysDao.FindAll(searchCritCollection); 

//select a list of days from resulting list 
IEnumerable<MedicalDays> queriedList = 
     days.SelectMany(i => i.MedicalRequest.MedicalUser == employee); 

Linq告诉我,该类型不能被推断的用法。我想知道我做错了什么,以及是否有这样做的首选方式。

谢谢你的时间。

+2

杰森的答案是要走的路。下面是如何使用SelectMany的一个很好的例子:http://weblogs.asp.net/zeeshanhirani/archive/2008/03/26/select-many-operator-part-1.aspx – 2010-05-19 09:21:59

+0

感谢David,因为我发布了更多信息,所以我尝试了Where()并没有得到任何结果,因为我的员工字符串的末尾有一些额外的空白。 – jim 2010-05-19 09:28:46

回答

10

在我看来,你想过滤清单days。如果这就是你想要的,你应该使用

days.Where(i => i.MedicalRequest.MedicalUser == employee); 
+0

我试过了,我没有得到任何错误,我也没有得到任何结果。我可以看到员工和i.medicalrequest.medicaluser的价值是平等的,但我在queriedList中没有结果。 – jim 2010-05-19 09:25:25

+0

不要在意最后的评论。我的一个琴弦末端有一些空白区域。感谢您的时间和快速回答。 – jim 2010-05-19 09:26:56