我是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; }
}
任何建议?
fileName
。只需编写代码:let fileName = Path.Combine(job.Folder, job.File)
或者您需要的任何逻辑... - Mark Seemann