私はこれを行う方法があることを知っていますが、私はそれを把握しようと壁に私の頭を叩いています。これはうまく動作します: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; }));
これは私に与え b odyは式ツリーに変換できません。
ブリリアント!ありがとうございました! –