我知道有一種方法可以做到這一點,但我一直在撞牆,試圖找出答案。這工作得很好:選擇與linq的匿名代表
private GenericRecord CreateGeneric(GenericRecord g, Member m)
{
g.Member = m;
return g;
}
public IList<GenericRecord> ReportFromDatabase(DateTime startDate, DateTime endDate)
{
List<GenericRecord> returnRecords = new List<GenericRecord>();
returnRecords.AddRange(from r in pjRepository.Records
join m in memberRepository.Members on r.SID equals m.MemberId.ToString()
where r.TransactionDate >= startDate && r.TransactionDate <= endDate
select CreateGeneric((GenericRecord)r, m));
return returnRecords;
}
但我知道有一種方法可以做到這一點沒有CreateGeneric功能。如何選擇內聯委託功能?
returnRecords.AddRange(from r in pjRepository.Records
join m in memberRepository.Members on r.SID equals m.MemberId.ToString()
where r.TransactionDate >= startDate && r.TransactionDate <= endDate
select (delegate
{
GenericRecord g = (GenericRecord)r;
g.Member = m;
return g;
}));
這給了我這樣的例外:
The type of the expression in the select clause is incorrect. Type inference failed in the call to 'Select'.
編輯:另一個失敗的嘗試
returnRecords.AddRange((from r in pjRepository.Records
join m in memberRepository.Members on r.SID equals m.MemberId.ToString()
where r.TransactionDate >= startDate && r.TransactionDate <= endDate
select new { r, m }).Select(x =>
{
GenericRecord g = (GenericRecord)x.r;
g.Member = x.m;
return g;
}));
這給了我:
lambda表達式與語句b ody不能轉換爲表達式樹。
太棒了!謝謝! – 2011-02-04 16:57:08