我尝试搜索这个,但似乎找不到任何与我的LINQ查询相匹配的东西来帮我解决这个问题。
我在Results View->基础对象
中的调试器中收到一条消息+ base {“无法创建类型'System.Object'的常量值。 此处仅支持原始类型或枚举类型 context。“} 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;
}
}
}
谢谢, 添
P.S。这个答案有助于解决这个问题:https://stackoverflow.com/a/1775514/2733668
答案 0 :(得分:2)
当存在关于Nullable<>
字段的条件时会发生此错误,并且比较不反映该情况。然后将原始(在您的情况下为false
)转换为Nullable<>
对象,并引发异常。
可能ShippingFlag
的类型为Nullable<bool>
,并假设您应该重写这样的条件:
var pending = context.HazmatInfoes
.Where(h => (!h.ShippingFlag.HasValue && h.ShippingFlag.Value.Equals(false)) && h.ShippingType.Equals("Manual"))