반응형
조인 방법과 람다를 사용하여 EntityFramework 조인
linq를 사용하여 조인을 수행하는 다른 방법이있는 것 같습니다. 하나는 더 간단하며 다음과 같이 테이블을 조인하는 것입니다.
var found = from c in s.categories
join cm in s.categorymaps on c.CategoryId equals cm.ChildCategoryId
select c;
람다를 사용하는 또 다른 방법이 있으며이 구문을 사용하여 조인하는 방법을 알아 내려고하는 데 시간이 많이 걸립니다. 누구나 자세한 설명과 많은 예제에 대한 링크를 제공 할 수 있습니까? 아니면 단순히이 다소 혼란스러운 구문을 사용하는 방법을 예제를 사용하여 보여줄까요?
var x = _session.All<category>().Join<categorymap,category, ....
일반적으로 LINQ에서 람다 구문을 선호하지만 Join
순전히 가독성을 위해 쿼리 구문을 선호하는 한 가지 예입니다.
그럼에도 불구하고 위의 쿼리에 해당하는 내용이 있습니다 (테스트되지 않은 것 같습니다).
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
반환하려는 항목에 따라 프로젝션을 조작해야 할 수도 있지만 그게 요령입니다.
여기 에서 몇 가지 예를 찾을 수 있습니다 .
// 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); }
Or just google for 'linq join method syntax'.
ReferenceURL : https://stackoverflow.com/questions/5010110/entityframework-join-using-join-method-and-lambdas
반응형
'programing' 카테고리의 다른 글
Python으로 머신의 외부 IP 주소 가져 오기 (0) | 2021.01.17 |
---|---|
매개 변수화 된 쿼리에 제공되지 않은 매개 변수가 필요합니다. (0) | 2021.01.17 |
파일 또는 어셈블리 'System.Web.WebPages.Razor, 버전 = 2.0.0.0을로드 할 수 없습니다. (0) | 2021.01.17 |
Rails 앱의 경우 로컬로 CSS로드되지만 Heroku에서는로드되지 않음 (0) | 2021.01.17 |
MySQL은 외래 키 제약 조건을 만들 수 없습니다. (0) | 2021.01.17 |