首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ关联-实体框架

LINQ关联-实体框架
EN

Stack Overflow用户
提问于 2012-08-22 08:41:10
回答 1查看 250关注 0票数 1

我有三个表,我使用edmx designer在它们之间添加关联。下面是它们是如何链接的。

(table1)贷款-(表2)投资者:多对一关系(Table2)投资者- (Table3) InvestorInfo :一对多关系

我想得到1个销售给一个投资者的贷款总数,2个投资者的名字和3个投资者的服务费,这是存储在Table3中的每个投资者的idx = 2005 (“投资者id & idx”是table3 - InvestorInfo表的主键)。

我如何在下面的查询中做到这一点?我被迫选择'FirstOrDefault()‘来访问Table3中的任何列(参见注释行)。如果我使用FirstOrDefualt,我得到一条idx =1而不是2005的记录。

代码语言:javascript
复制
 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();
EN

回答 1

Stack Overflow用户

发布于 2012-08-22 12:08:41

你的问题不是很清楚-我不知道idx是在Table3中还是在Table1中,以及你想选择什么,但我假设你有一个多-一-多模式,其中一个Investor有零个或多个Loans &零个或多个InvestorInfos。比方说,你想要获得所有的贷款,这些贷款加入了idx = 2005的投资者信息。如果我错了就纠正我,如果我对了就纠正你的问题!

InvestorInfo对象开始,您知道只有一个Investor,但将有零个或多个Loans

代码语言:javascript
复制
// 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笔贷款。你想要哪一个?

代码语言:javascript
复制
-- 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运算符。

代码语言:javascript
复制
service_fee = grp.Max(l => l.Table2.Table3.Max(t => t.DT_REAL_PERC_VALUE)) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12064959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档