1

我尝试对此进行搜索,但似乎找不到任何与我的 LINQ 查询匹配的内容来帮助我解决这个问题。

我在结果视图-> 基础对象的调试器中收到一条消息

+base {“无法创建'System.Object'类型的常量值。在此上下文中仅支持原始类型或枚举类型。”} System.SystemException {System.NotSupportedException}

这是我的 LINQ 查询(在 LINQPad 中返回结果很好......):

public IEnumerable<PendingItems> GetHazmatPendingShipping()
{
    var pending = context.HazmatInfoes
                         .Where(h => (h.ShippingFlag.Equals(false) && (h.ShippingType.Equals("Manual"))))
                         .GroupBy(x => new {x.ToBU, x.FromBU}, y => new {y})
                         .Select(p => p);
    return pending;
}

我知道我的返回类型是错误的。在我弄清楚为什么这个查询无法返回结果之后,我会继续努力。

我对这个问题的回答:

因为我有一个复合键 {string, string},所以我必须创建一个名为 PendingItems 的类。

public IQueryable<PendingItems> GetHazmatPendingShipping()
    {
        IQueryable<PendingItems> pending = context.HazmatInfoes
            .Where(h => ((h.ShippingFlag.Value == false && h.ShippingType.Equals("Manual"))))
            .GroupBy(x => new {x.ToBU, x.FromBU}, y => y)
            .Select(p => new PendingItems {ToBu = p.Key.ToBU, FromBu = p.Key.FromBU, Items = p});
        return pending;
    }

PendingItems 类:

using System.Collections;
using System.Collections.Generic;

namespace Hazmat.Models
{
    public class PendingItems : IEnumerable
    {
        public string ToBu { get; set; }
        public string FromBu { get; set; }
        public IEnumerable<HazmatInfo> Items { get; set; }

        public IEnumerator GetEnumerator()
        {
            yield return this.Items;           
        }
    }
}

谢谢,蒂姆

PS这个答案有助于解决这个问题: https ://stackoverflow.com/a/1775514/2733668

4

1 回答 1

2

当存在有关Nullable<>字段的条件时会发生此错误,并且比较不能反映这一点。然后将原始(false在您的情况下)转换为Nullable<>对象,并引发异常。

可能ShippingFlag是 type Nullable<bool>,并假设您应该像这样重写您的条件:

var pending = context.HazmatInfoes
    .Where(h => (!h.ShippingFlag.HasValue && h.ShippingFlag.Value.Equals(false)) && h.ShippingType.Equals("Manual"))
于 2013-10-17T07:08:08.273 回答