Я новичок в функциональной части 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; }
}
};
Этот код выдает следующую обоснованную ошибку компилятора:
не может назначить лямбда-выражение
свойство анонимного типа
Приведенный выше код устанавливает делегата в свойство 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; }
}
Есть предложения?