簡體   English   中英

LINQ EF查詢問題

[英]LINQ EF query issue

我在代碼中處理linq查詢的實體框架遇到問題。 盡管下面的查詢在SQL Server 2008 R2中為我提供了正確的記錄集,但我想知道這是否與我的查詢有關,還是與EF有關,或者是否為EF,是否有解決此問題的方法。 每個表都有一對多的關系。 如果我需要提供有關我的問題的其他信息,請告訴我。

值得一提的是,源表具有大量的Nullable的FrequencyID和CurrencyID,在SQL Server中,當我使用Null排除源表時,我總共獲得了360條記錄,這是我期望的結果。 EF在某種程度上干擾了這里,我們將竭誠歡迎您的任何幫助...

SQL查詢

select 
    spa.PartnerNumber,
    sp.FirstName,
    sp.LastName,
    al.AllowanceName,
    spa.StartDate,
    spa.EndDate,
    fr.FrequencyDescription,
    cr.CurrencyCode,
    spa.Note 
from SAP2.PartnerAllowance spa
join MasterData..AllowanceMaster al on al.AllowanceMasterId = spa.AllowanceID
join SAP2.Partner sp on spa.PartnerNumber = sp.PartnerNumber
join MasterData.Currency cr on spa.CurrencyID = cr.CurrencyId
join MasterData..Frequency fr on spa.FrequencyID = fr.FrequencyID

相關LINQ

var sap2Partners = sap2Partner.Get().ToList();
var currency = sap2Currency.Get().ToList();
var frequency = sap2Frequency.Get().ToList();
var sap2PartnerAllowance = sap2PartnerAllowanceRepository.Get().ToList();
var allowance = sap2Allowance.Get().ToList();
var result = (from spa in sap2PartnerAllowance
              join spt in sap2Partners on spa.PartnerNumber equals spt.PartnerNumber
              join al in allowance on spa.AllowanceID equals al.AllowanceMasterId
              join cr in currency on spa.Currency.CurrencyId equals cr.CurrencyId
              join fr in frequency on spa.Frequency.FrequencyID equals fr.FrequencyID
              select new DataEntityUI
              {
                  PartnerNumber = spa.PartnerNumber,
                  FirstName = spt.FirstName,
                  LastName = spt.LastName,
                  AllowanceName = al.AllowanceName,
                  StartDate = String.Format(CurrentUserPreferences.DateFormat, spa.StartDate),
                  EndDate = String.Format(CurrentUserPreferences.DateFormat, spa.EndDate),
                  Amount = spa.Amount,
                  Frequency = fr.FrequencyDescription,
                  Currency = cr.CurrencyDesciption,
                  Note = spa.Note

              }).ToList();

可能導致問題的行是:

String.Format(CurrentUserPreferences.DateFormat, spa.StartDate)

因為您正在格式化查詢本身內部的db值。 您可以克服的是,從查詢中獲取結果,然后將數據本地格式化為:

  var result = (from spa in sap2PartnerAllowance
                      join spt in sap2Partners on spa.PartnerNumber equals spt.PartnerNumber
                      join al in allowance on spa.AllowanceID equals al.AllowanceMasterId
                      join cr in currency on spa.Currency.CurrencyId equals cr.CurrencyId
                      join fr in frequency on spa.Frequency.FrequencyID equals fr.FrequencyID
                      select new 
                      {
                          PartnerNumber = spa.PartnerNumber,
                          FirstName = spt.FirstName,
                          LastName = spt.LastName,
                          AllowanceName = al.AllowanceName,
                          StartDate =  spa.StartDate,
                          EndDate = spa.EndDate,
                          Amount = spa.Amount,
                          Frequency = fr.FrequencyDescription,
                          Currency = cr.CurrencyDesciption,
                          Note = spa.Note

                      }).ToList();

        var result2 =result.Select(spa=>new DataEntityUI
                      {
                          PartnerNumber = spa.PartnerNumber,
                          FirstName = spa.FirstName,
                          LastName = spa.LastName,
                          AllowanceName = spa.AllowanceName,
                          StartDate = String.Format(CurrentUserPreferences.DateFormat, spa.StartDate),
                          EndDate = String.Format(CurrentUserPreferences.DateFormat, spa.EndDate),
                          Amount = spa.Amount,
                          Frequency = spa.FrequencyDescription,
                          Currency = spa.CurrencyDesciption,
                          Note = spa.Note
                      }).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM