2016-10-22 80 views
1

我沒有想法如何連接表與多對多關係,幷包括其他表,最後創建viewmodel。如何加入多對多的關係,並在linq中包含其他表(表達式)

我圖enter image description here

最後,我想有視圖模型:

public class InsurancePolicyItemViewModel : InsurancePolicyItem 
    { 
    public InsurancePolicyItemViewModel() 
    { 
    } 

    public InsurancePolicyItemViewModel(InsurancePolicyItem item) 
    { 
     //do something - supplement the basic information 
    } 

    public int InsurancePolicyItemId { get; set; } 
    public string Name { get; set; } 
    [...] 
    public IEnumerable<Customers> { get; set; } 
    public IEnumerable<InsurancePolicyItemInstallments> { get; set; } 
    } 

請幫我創建LINQ查詢。這將是很好的使用lambda表達式?

現在我的查詢看起來像:

var result = contex.InsurancePolicyItem.Where(w => w.IsActive && w.IsVisible) 
            .Include(i => i.InsuranceCompany) 
            .Include(i => i.InsuranceCompanyPolicyStatus) 
            .Include(i => i.InsuranceCompanyPolicyType) 
            .Include(i => i.User_AddedBy) 
            .Include(i => i.User_ModifiedBy) 
            .Include(i => i.InsurancePolicyItemInstallment) 
            .Include(i => i.InsurancePolicyItemFile) 
            .Include(i => i.InsurancePolicyItemCustomers) 
            .Select(s => s).ToList(); 

但它返回InsurancePolicyItem不包括客戶表。

我想:

var query = contex.InsurancePolicyItem.Where(w => w.IsActive && w.IsVisible).Select(s => new InsurancePolicyItemViewModel(s) { 
       CustomerList = ????, 
       InstallmentList = s.InsurancePolicyItemInstallment 
       [...] 
      }); 

,但我不知道怎麼利用加入,包括

+1

見發帖:http://stackoverflow.com/questions/4115321/how-do-i-convert-multiple-inner-joins-in-sql-to-linq – jdweng

+0

經過在評論@jdweng發佈鏈接。這可能會幫助你實現你想要的。 – Rajput

+0

在解決方案上創建我的查詢庫,但返回**只有無參數的構造函數和初始化器在LINQ to Entities中受支持** – 18666

回答

0

給你一個例子來加入不同的表,在運行時

var persons = (
       // taking Persons table as c 
       from c in context.Persons 
       // now taking PersonStatus table as x and making join 
       // with same key columns of x and c 
       join x in context.PersonStatus on c.TcKimlik equals x.Tckn 
       join h in hospitals on x.HospitalCode equals h.KURUM_KODU 
       where x.Statu == true 
       //create new model by taking data of different tables of join 
       select new DataViewModel 
       { 
        Id = c.Id, 
        TcKimlik = c.TcKimlik, 
        Uyruk = c.Uyruk, 
        Ad = c.Ad, 
        Soyad = c.Soyad, 
        Cinsiyet = c.Cinsiyet, 
        DogumTarihi = c.DogumTarihi, 
        KurumStatu = h.PAYDAS, 
        KurumKodu = h.KURUM_KODU, 
        KurumAdi = h.KURUM_ADI, 
        BranchName = c.Brans.BranchName, 
        AcademicTitleName = c.AkademikUnvan.Title, 
        ManagerialTitleName = c.IdariUnvan.Title, 
        StaffStatuName = c.Durum.Statu, 
        BranchTypeName = c.Unvan.Type, 
        ServiceClassName = c.Unvan.ServiceClass.Name, 
        City = h.KURUM_ILI, 
        CityCode = h.IL_KODU, 
        CityTownName = h.KURUM_ILCESI 
       }).AsQueryable(); 

我打造的全新車型認爲這將幫助你解決你的問題

0

我的解決方案基於喲我們的代碼:

var a = contex.InsurancePolicyItem.Where(w => w.IsActive && w.IsVisible && w.ItemCreatedStatusId != Helpers.InsurancePolicyItemStatus.Draft) 
                 .Select(s => new InsurancePolicyItemViewModel(s) 
                 { 
                  CustomerList = s.InsurancePolicyItemCustomers.Join(contex.Customers, 
                       q => q.CustomersId, 
                       c => c.CustomersId, 
                       (q, c) => new 
                       { 
                        customerList = c 
                       }).Select(ss => ss.customerList), 
                  InstallmentList = s.InsurancePolicyItemInstallment, 
                  FileList = s.InsurancePolicyItemFile, 
                 }); 

但返回錯誤

只有參數構造函數和初始化在LINQ 支持到實體

我發現類似的問題:

Only parameterless constructors and initializers are supported in LINQ to Entities

但它不起作用...如果我創建匿名類型而不是InsurancePolicyItemViewModel,查詢返回錯誤

無效的列名稱'Discriminator'。

相關問題