繁体   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