繁体   English   中英

如何创建一个字典,其中键是一天,值是对象列表

[英]How to create a dictionary where key is a day and value is a list of object

我有以下对象:

public class ExchangeRate
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Required]
    [Min(0)]
    public double Value { get; set; }

    [Required]
    public DateTime ValidFrom { get; set; } = DateTime.Now;

    [MaxLength(3)]
    [Required]
    public int CurrencyId { get; set; }
    public virtual CurrencyDto Currency { get; set; }
}

我需要从 ExchangeRate 类型列表中创建一个字典,其中键是 ValidFrom 中的 day 属性,字典中的值是 Exchange 对象列表,其中 ValidFrom 属性 day 属性等于键。

这是我尝试过的:

var exchangeRates = dbContext.ExchangeRates.Where(x => x.ValidFrom.Year == DateTime.Now.Year)
                                           .Where(x => x.ValidFrom.Month == DateTime.Now.Month)
                                           .Where(x => x.ValidFrom.Day >= day)
                                           .GroupBy(k => k.ValidFrom.Day, v => v)
                                           .ToDictionary(x => x.Key, x => x.ToList());

我收到以下错误:

System.InvalidOperationException:LINQ 表达式 'DbSet() .Where(x => x.ValidFrom.Year == DateTime.Now.Year) .Where(x => x.ValidFrom.Month == DateTime.Now.Month) 。 Where(x => x.ValidFrom.Day >= __day_0) .GroupBy(keySelector: k => k.ValidFrom.Day, elementSelector: v => v)' 无法翻译。 以可翻译的形式重写查询,或通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用显式切换到客户端评估。

谢谢

这就是我最后解决的方法:

        var exchangeRates = await dbContext.ExchangeRates.Where(x => x.ValidFrom.Year == DateTime.Now.Year)
                                                         .Where(x => x.ValidFrom.Month == DateTime.Now.Month)
                                                         .Where(x => x.ValidFrom.Day >= day)
                                                         .GroupBy(k => k.ValidFrom.Day, v => v)
                                                         .Select(x => new KeyValuePair<int, List<ExchangeRateDto>>(x.Key, x.ToList()))
                                                         .ToDictionaryAsync(x => x.Key, x => x.Value);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM