0

我想问是否有更好的方法来实现我想要做的事情。

我需要获取日期大于或等于给定日期的子图的所有记录,以及日期小于给定日期的第一条记录。

我发现这个解决方案有效,但我不确定这是否是最好的方法。

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;
4

2 回答 2

1

我不知道你需要返回哪一个。应该是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);
于 2013-08-23T14:12:21.220 回答
0

嗨,谢谢你的回答。

通过您发布的查询,我没有得到我需要的所有数据。我不认为我可以通过一个查询得到我需要的东西。

利息表
-----------------
2013-5-16 | 1%
2013-6-21 | 0.8%
2013-7-12 | 0.5%
2013-8-06 | 0.6%

istc0 表包含我所有的 isin 编号,并作为与兴趣表 One to Many 的关系。

函数的参数之一是日期。所以如果我通过例如

日期 = 2013-7-01

我需要的结果如下:

利息表
-----------------
2013-6-21 | 0.8%
2013-7-12 | 0.5%
2013-8-06 | 0.6%

因此,在我的 forst 帖子中,分配给 q 的第一个查询在 7 月第一个之后检索所有利息,分配给 qq 的第二个查询在 7 月第一个之前检索第一个利率。我的函数完成了这项工作,我得到了我需要的一组数据,但这似乎不是最干净的方法。

于 2013-08-27T06:21:22.000 回答