Linq-to-SQL ToDictionary

本文关键字:ToDictionary Linq-to-SQL | 更新日期: 2023-09-27 18:10:38

我有以下LINQ查询:

var allocations = 
    from ta in dc.TransactionAllocations
    where ta.Allocated == false
    group ta by new { ta.ReceiptReference, ta.Customer } into tag
    select new
    {
        Customer = tag.Key.Customer,
        ReceiptReference = tag.Key.ReceiptReference,
        Invoices = tag.ToDictionary(a => new AllocationDictionaryKey()
            {
                ID = a.ID, 
                InvoiceReference = a.InvoiceReference 
            }, 
            a => a.Amount)
    }

但是当我尝试执行这个时,ToDictionary调用失败了,因为它不是一个受支持的LINQ-to-SQL操作符。我看到的唯一解决这个问题的方法是在查询结束时调用ToDictionary,但是我只希望我的匿名类型的一个属性是字典!

关于如何去做这件事有什么想法吗?

Linq-to-SQL ToDictionary

看看如何使用AsEnumerable。这样做的目的是获取特定平台不支持的round操作符。这意味着数据将在代码所在的位置处理,而不是在数据所在的位置。

Invoices = tag.AsEnumerable().ToDictionary(a => new AllocationDictionaryKey() { ID = a.ID, InvoiceReference = a.InvoiceReference }, a => a.Amount)

很老了,不过还是这样吧。我用

解决了我的问题
 from ta in dc.TransactionAllocations.AsEnumerable()