我是 C# 功能方面的新手,如果问题很蹩脚,我很抱歉。
鉴于以下错误代码:
var jobSummaries = from job in jobs
where ...
select new
{
ID = job.ID,
Description = job.Description,
FileName = (job) => {
// primitive logic not
// worth to become a named method
try { return job.Files[0].LocalName); }
catch { return null as string; }
}
};
此代码产生以下合理的编译器错误:
无法将 lambda 表达式分配给匿名类型属性
上面的代码会将委托设置为 FileName 属性。但这不是我的目标。我希望代码像这样工作,但不命名方法:
var jobSummaries = from job in jobs
where ...
select new
{
ID = job.ID,
Description = job.Description,
FileName = this.ExtractFileName(job)
};
...
private string ExtractFileName(Job job)
{
try { return Path.GetFileName(job.Files[0].LocalName); }
catch { return null as string; }
}
有什么建议么?