2010-11-20 23 views
0

Katılma ve deyimleri kullanarak bir linq sorgusu yapıyorum.linq projeksiyon

var testmyquery = from uf in TheFolderModel.UserFolders 
       where (uf.UserID == TheUserID) 
       join ul in TheFolderModel.UserBooksheets on 
       uf.FolderID equals ul.FolderID 
       join ll in TheFolderModel.BooksheetBooks on 
       ul.BooksheetID equals ll.BooksheetID 
       join ua in TheFolderModel.BooksAppointments on 
       ll.BookID equals ua.BookID 
       group ua.BookID by uf.FolderID into Holdingvar 
       orderby Holdingvar.Key 
       select new { TheCount = Holdingvar.Count(), Holdingvar.Key }; 

Ben retuning nesneye uf ve ul tablolardan sütunları eklemek gerekir ama Holdingvar üzerinde bir projeksiyon var bir kere, Intellisense uf bana erişim vermek veya ben artık zaman UL gelmez yeni {} deyiminde. Seçme ifadesine sütunları nasıl eklerim?

Teşekkürler.

cevap

1

Aldım: Ben sadece tutan değişkeni projeksiyon yaptıktan sonra bir değişken yeniden tanımlamak için gerekli

var testmyquery = from uf in TheFolderModel.UserFolders 
       where (uf.UserID == TheUserID) 
       join ul in TheFolderModel.UserBooksheets on 
       uf.FolderID equals ul.FolderID 
       join ll in TheFolderModel.BooksheetBooks on 
       ul.BooksheetID equals ll.BooksheetID 
       join ua in TheFolderModel.BooksAppointments on 
       ll.BookID equals ua.BookID 
       group ua.BookID by uf.FolderID into Holdingvar 
       orderby Holdingvar.Key 
       from uf2 in TheFolderModel.UserFolders 
       where uf2.FolderID == testg.Key 
       select new { testk = testg.Count(), testg.Key, uf2.FolderName }; 

.

0

Yeni seçtikten sonra {..., uf ve ul kapsam dışıdır. Bu sizin için çalışacak olsaydı

emin değilim ama sayımı ve anahtarı gerekiyorsa, bir izin beyanı yapabilirdi:

var testmyquery = from uf in TheFolderModel.UserFolders 
      where (uf.UserID == TheUserID) 
      join ul in TheFolderModel.UserBooksheets on 
      uf.FolderID equals ul.FolderID 
      join ll in TheFolderModel.BooksheetBooks on 
      ul.BooksheetID equals ll.BooksheetID 
      join ua in TheFolderModel.BooksAppointments on 
      ll.BookID equals ua.BookID 
      group ua.BookID by uf.FolderID into Holdingvar 
      orderby Holdingvar.Key 
      let someproperty = new { TheCount = Holdingvar.Count(), Holdingvar.Key } 
      select new { uf.UserID, ........ } 
0

Ben bunu hep yapıyoruz. Neden senin için çalışmıyor? Sorgemin yapısı biraz farklı. Belki de onu düzeltmelisin?

var q = (from at in Repository.For<AuditTrailEntity>() 
       from att in Repository.For<AuditTrailTypeEntity>() 
       join ue in Repository.For<UserEntity>() on at.UserId equals ue.RowId 
       join up in Repository.For<UserProfileEntity>() on ue.AspnetUserId equals up.UserId 
       where (at.AffectedEntityName == "AssetEntity" && at.PKId == assetId.ToString() && at.ActionType == att.RowId) 
       orderby at.CreatedDate descending 
       select new AssetAuditTrailModel 
          { 
           RowId = at.RowId, 
           AffectedEntityName = at.AffectedEntityName, 
           PKId = at.PKId, 
           ActionType = at.ActionType, 
           ActionData = at.ActionData, 
           UserId = at.UserId, 
           CreatedDate = at.CreatedDate, 
           ActionName = att.FriendlyName, 
           UserName = up.FirstName + " " + up.LastName, 
          });