簡體   English   中英

LINQ關聯-實體框架

[英]LINQ association - Entity Framework

我有三個表,並且我已經使用edmx設計器在它們之間添加關聯。 下面是它們的鏈接方式。

(表1)貸款-(表2)投資者:多對一關系(表2)投資者-(表3)InvestorInfo:一對多關系

我想得到[1]賣給一位投資者的貸款總數,[2]投資者名稱和[3]投資者的服務費,這些費用存儲在表3中,每個投資者的idx = 2005(“ investor id&idx”是table3-InvestorInfo表)。

我如何在下面的查詢中做到這一點? 我被迫選擇“ FirstOrDefault()”來訪問表3中的任何列(請參見注釋行)。 如果使用FirstOrDefualt,則會得到idx = 1而不是2005的記錄。

 var loanPurchaseData = (from cd in entity.Table1
                        //where cd.Table2.Table3.Select(x => x.IDX == 2005)
                        //where cd.ULDD_SET_POOLS.ULDD_SET_POOLDT.FirstOrDefault().SORT_ID == 2005
                        group cd by new { cd.Table4.PurchaseDate, cd.Number } into grp
                        select new
                        {
                            investor = grp.FirstOrDefault().Investor,
                            no_of_loans = grp.Count(),                                               
                            sort_id = grp.FirstOrDefault().Table2.Table3.FirstOrDefault().SORT_ID,
                            service_fee_rate = grp.FirstOrDefault().Table2.Table3.FirstOrDefault().DT_REAL_PERC_VALUE
                        }).ToList();

您的問題不是很清楚-我不知道idx是在Table3還是在Table1中,以及您要選擇什么,但是我假設您有一個多對多的架構,其中Investor有零個或多個Loans ,零個或多個InvestorInfos 例如,您想獲得所有與idx = 2005投資者信息有關的貸款。 如果我錯了,請糾正我,如果我錯了,請糾正您的問題!

InvestorInfo對象開始,您知道只有一個Investor但是會有零個或多個Loans

// only one InvestorInfo for idx, but this isn't clear in your question
var investorInfo = context.InvestorInfos.SingleOrDefault(i => i.idx == 2005);

var loans = investorInfo.Investor.Loans;

問題的症結在於,您無法獲得投資者信息的“貸款服務費”。 為什么不? 因為那個投資者有5筆貸款。 你想要哪一個?

-- we can get the maximum, minimum, sum, etc...
var max = loans.Max(l => l.DT_REAL_PERC_VALUE);
var min = loans.Min(l => l.DT_REAL_PERC_VALUE);
var min = loans.Sum(l => l.DT_REAL_PERC_VALUE);

同樣,也不清楚您要做什么,也不清楚數據的實際外觀,但是在一對多關系中,對於“一個”一側的每個,您必然會擁有多個“一個”一側。


要獲得最大值,請使用Max運算符。

service_fee = grp.Max(l => l.Table2.Table3.Max(t => t.DT_REAL_PERC_VALUE)) 

暫無
暫無

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

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