Angenommen, ich habe folgende Einrichtungen und dtoskonvertieren Entity mit Navigationseigenschaft zu DTO mit IQueryable
public class Country
{
public List<NameLocalized> NamesLocalized;
public CountryData Data;
}
public class NameLocalized
{
public string Locale;
public string Value;
}
public class CountryData
{
public int Population;
}
public class CountryDto
{
public String Name;
public CountryDataDto Data;
}
public class CountryDataDto
{
public int Population;
}
I Land CountryDto (und im Idealfall möchte ich eine einzelne Abfrage in der Datenbank machen) zu konvertieren. Ich habe in meinen anderen Fragen zu Stackoverflow einige Anregungen erhalten und kann nun die Aufgabe, aber nur teilweise, erfüllen. Ich bin fest, wie Navigationseigenschaft (CountryData
in diesem Fall) konvertieren. Ich wurde vorgeschlagen, LINQKit dafür zu verwenden, aber habe keine Idee, wie man es einführt. Hier ist mein Code, der nur Name
Eigenschaft, aber nicht Data
Navigationseigenschaft füllt.
public static async Task<List<CountryDto>> ToDtosAsync(this IQueryable<Country> source, string locale)
{
if(source == null)
{
return null;
}
var result = await source
.Select(src => new CountryDto
{
Name = src.NamesLocalized.FirstOrDefault(n => n.Locale == locale).Name
})
.ToListAsync();
return result;
}