working related query not includes framework first code entity-framework join lambda

entity-framework - query - load related entities entity framework core



Entityframework Únete utilizando el método join y lambdas (2)

Parece que hay diferentes maneras de hacer combinaciones usando linq. Uno es más sencillo e implica simplemente unir mesas como esta:

var found = from c in s.categories join cm in s.categorymaps on c.CategoryId equals cm.ChildCategoryId select c;

Hay otra forma de usar lambdas y me está costando muchísimo tratar de descubrir cómo unirme usando esta sintaxis. ¿Alguien puede proporcionar enlaces a explicaciones detalladas y muchos ejemplos? ¿O simplemente demuestra usando ejemplos cómo usar esta sintaxis bastante confusa?

var x = _session.All<category>().Join<categorymap,category, ....


Generalmente prefiero la sintaxis lambda con LINQ, pero Join es un ejemplo en el que prefiero la sintaxis de la consulta, puramente para la legibilidad.

No obstante, aquí está el equivalente a su consulta anterior (creo, no probado):

var query = db.Categories // source .Join(db.CategoryMaps, // target c => c.CategoryId, // FK cm => cm.ChildCategoryId, // PK (c, cm) => new { Category = c, CategoryMaps = cm }) // project result .Select(x => x.Category); // select result

Puede que tengas que jugar con la proyección dependiendo de lo que quieras devolver, pero eso es lo más importante.


Puedes encontrar algunos ejemplos here :

// Fill the DataSet. DataSet ds = new DataSet(); ds.Locale = CultureInfo.InvariantCulture; FillDataSet(ds); DataTable contacts = ds.Tables["Contact"]; DataTable orders = ds.Tables["SalesOrderHeader"]; var query = contacts.AsEnumerable().Join(orders.AsEnumerable(), order => order.Field<Int32>("ContactID"), contact => contact.Field<Int32>("ContactID"), (contact, order) => new { ContactID = contact.Field<Int32>("ContactID"), SalesOrderID = order.Field<Int32>("SalesOrderID"), FirstName = contact.Field<string>("FirstName"), Lastname = contact.Field<string>("Lastname"), TotalDue = order.Field<decimal>("TotalDue") }); foreach (var contact_order in query) { Console.WriteLine("ContactID: {0} " + "SalesOrderID: {1} " + "FirstName: {2} " + "Lastname: {3} " + "TotalDue: {4}", contact_order.ContactID, contact_order.SalesOrderID, contact_order.FirstName, contact_order.Lastname, contact_order.TotalDue); }

O simplemente google para la ''sintaxis del método de unión de linq''.