Puede utilizar ToDictionary para crear un diccionario de una Secuencia LINQ.
La primera parte es la clave, y la segunda el valor, P. ej.
.Select(country => new SitiesViewByUser()
{
Country = country.Country,
City = country.Cities.ToDictionary(c => c, c => c);
});
Esto supone que City
en SitiesViewByUser
se define como Dictionary<string, string>
Su LINQ es bastante confuso sin embargo. Está creando un tipo anónimo, con el objetivo de dar forma a un Country
, pero que tiene una propiedad Country
, que de hecho es el Title
del país (¿ese es el nombre del país?).
También tiene una colección de solo la ciudad Titles
, así que no estoy seguro de qué valor va a utilizar en su diccionario City
en su tipo SitiesViewByUser
.
Además, ¿qué es un Sitie? : \
actualización
Se podría hacer algo como esto:
var countries = (from country in db.Countries
select new
{
Title = country.Title,
CityIds = country.Cities.Select(c => c.Id),
CityTitles = country.Cities.Select(c => c.Title)
}).AsEnumerable();
// You have a collection of anonymous types at this point,
// each type representing a country
// You could use a foreach loop to generate a collection
// of SitiesViewByUser, or you could use LINQ:
var sitiesViewByUsers = countries.Select(c => new SitiesViewByUser
{
Country = c.Title,
City = c.CityIds.Zip(c.CityTitles, (k, v) => new { Key = k, Value = v })
.ToDictionary(x => x.Key, x => x.Value)
};
Por otra parte, ¿por qué no cambiar el tipo de SitiesViewByUser
ser:
public class SitiesViewByUser
{
public string Country { get; set; }
public IEnumerable<City> Cities { get; set; }
}
A continuación, puede hacer (usando sintaxis fluida):
var sitiesViewByUsers = db.Countries.Select(c => new SitiesViewByUser
{
Country = c.Title,
Cities = c.Cities
});
¿Cuál es la definición de la propiedad de la ciudad en SitiesViewByUser? – devdigital
Actualizo mi publicación – Mediator
¿De dónde viene la clave int del Dictionary? ¿Es esta la clave principal de la ciudad? No está recuperando esto en su consulta inicial LINQ to Entities. – devdigital