Jestem nowy w funkcjonalnej stronie C#, przepraszam, jeśli pytanie jest lame.Przypisywanie własności anonimowego typu za pomocą anonimowej metody
Biorąc pod uwagę następujący kod ŹLE:
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; }
}
};
Kod ten tworzy następującą uzasadnioną błąd kompilatora:
cannot assign lambda expression to anonymous type property
Powyższy kod będzie ustawiony delegata do właściwości pliku. Ale to nie jest mój cel. Chcę, aby kod działał w ten sposób, ale bez nazywania metody:
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; }
}
Jakieś sugestie?
Po prostu próbowałem. Nie mogę ustawić wyrażenia lambda jako zmiennej lokalnej z "let". Zaktualizowałem przykładowy kod. Mam próbę/catch, która utrudnia bezpośrednie przetwarzanie. – GarbageGuy
Nie, nie można przypisać wyrażenia lambda do 'fileName'. Po prostu napisz kod: 'let fileName = Path.Combine (job.Folder, job.File)' lub jakakolwiek logika, której potrzebujesz ... –
Dlaczego anonimowy downwise? –