2010-05-19 156 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