![](/img/trans.png)
[英]Merging multiple IQueryable queries using Concat (Entity Framework)
[英]Entity Framework IQueryable, with 2 queries
我想问一问是否有更好的方法来实现我的目标。
我需要获取具有日期格或等于给定日期的子图的所有记录,以及具有次于给定日期的日期的第一条记录。
我发现此解决方案有效,但是我不确定这是否是最佳方法。
var q = context.Istc0.Include("Interests").Where(a => a.IIsin == listKey).Select(a => new
{
Istc0 = a,
Interests = a.Interests.Where(d => d.InDat >= date)
});
var qq = context.Istc0.Include("Interests").Where(a => a.IIsin == listKey).Select(a => new
{
Istc0 = a,
Interests = a.Interests.Where(d => d.InDat < date).OrderByDescending(d => d.InDat).Take(1)
});
var xxx = q.ToList()[0].Istc0;
xxx = qq.ToList()[0].Istc0;
return xxx;
我不知道您需要返回哪一个。 可能是yyy。
var q = context.Istc0.Include("Interests").Where(a => a.IIsin == listKey).Select(a => new
{
Istc0 = a,
Interests = a.Interests.Where(d => d.InDat >= date)
}).ToList();
var xxx = q[0].Istc0;
var yyy = q.OrderByDescending(d => d.InDat).Take(1).SingleOrDefault().Istc0;
Dictionary<string,decimal> result = new Dictionary<string,decimal>();
result.Add("all",xxx);
result.Add("previous",yyy);
return result;
在此示例中,我创建了一个带有字符串键(可以是整数或任何您喜欢的值)和十进制(我想返回的值是十进制类型)值的字典来存储查询结果。 然后我退回这本字典。
另一种方法是拥有一个强类型的对象并返回该对象的列表。
最后,您可以定义两个输出参数(请阅读 )。 例如:
public void GetInterestRates(string listKey, out decimal currentRate, out decimal previousRate)
{
var q = context.Istc0.Include("Interests").Where(a => a.IIsin == listKey).Select(a => new
{
Istc0 = a,
Interests = a.Interests.Where(d => d.InDat >= date)
}).ToList();
var currentRate = q[0].Istc0;
var previousRate = q.OrderByDescending(d => d.InDat).Take(1).SingleOrDefault().Istc0;
}
当您要使用此功能时:
decimal currentRate , previousRate;
GetInterestRates(listKey, currentRate , previousRate);
嗨,谢谢你的回答。
通过您发布的查询,我无法获得所需的所有数据。 我认为一个查询无法满足我的需求。
Interest table ----------------- 2013-5-16 | 1% 2013-6-21 | 0.8% 2013-7-12 | 0.5% 2013-8-06 | 0.6%
istc0表包含我的所有isin号,并且与兴趣表“一对多”相关。
该函数的参数中的日期是日期。 所以如果我通过
日期= 2013-7-01
我需要的结果如下:
Interest table ----------------- 2013-6-21 | 0.8% 2013-7-12 | 0.5% 2013-8-06 | 0.6%
因此,在我的第一篇文章中,分配给q的第一个查询在7月第一个查询之后检索所有利息,分配给qq的第二个查询在7月第一个查询之前检索第一利率。 我的函数完成了工作,并且我获得了所需的数据集,但这似乎并不是最干净的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.