Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;无法在LINQ to Entities查询中构造实体或复杂类型;内控器_C#_Asp.net Mvc_Linq_Entity Framework - Fatal编程技术网

C# &引用;无法在LINQ to Entities查询中构造实体或复杂类型;内控器

C# &引用;无法在LINQ to Entities查询中构造实体或复杂类型;内控器,c#,asp.net-mvc,linq,entity-framework,C#,Asp.net Mvc,Linq,Entity Framework,我的控制器中有这个代码 IQueryable<SellingItem> sellingitems = db.SellingItems .GroupBy(s => new { s.ItemId ,s.Condition,s.ExpInDays}) .Select(si => new SellingItem { Item = si.First().Item,

我的控制器中有这个代码

IQueryable<SellingItem> sellingitems = db.SellingItems
            .GroupBy(s => new { s.ItemId ,s.Condition,s.ExpInDays})
            .Select(si => new SellingItem
            {
                Item = si.First().Item,
                Condition = si.First().Condition,
                ExpInDays = si.First().ExpInDays,
                Qty = si.Sum(i => i.Qty),
            });
IQueryable sellingitems=db.sellingitems
.GroupBy(s=>new{s.ItemId,s.Condition,s.ExpInDays})
.选择(si=>new SellingItem
{
Item=si.First().Item,
条件=si.First().条件,
ExpInDays=si.First().ExpInDays,
数量=总数量(i=>i数量),
});
当我尝试运行它时,我得到了 错误

无法在LINQ to Entities查询中构造实体或复杂类型

现在我发现我的linq查询太复杂,实体框架无法处理

所以我有两个变通办法,但我不喜欢两个

一,。 将整个表加载到内存中,并按如下方式进行查询

二,。 使用SQL语句,这将更快,但不会遵循实体框架规则

有更好的办法吗

-----更新---------------------------------

事实证明(非常感谢大家)

我说错话了

现在我觉得我的linq查询太复杂,实体框架无法处理,


它不起作用,因为我使用了同一个类的结果。我创建了一个新类,现在它的工作令人惊讶

您不需要求助于任何变通方法来修复该异常本身。问题在于
SellingItem
是实体框架模型的一部分。其原因已在中解释

选择一个匿名对象,如下所示:

IQueryable<SellingItem> sellingitems = db.SellingItems
.GroupBy(s => new { s.ItemId ,s.Condition,s.ExpInDays})
.Select(si => new
{
    Item = si.First().Item,
    Condition = si.First().Condition,
    ExpInDays = si.First().ExpInDays,
    Qty = si.Sum(i => i.Qty),
});
当然,您需要确保这个特定类中的类型与其各自的类型相匹配

然后,您可以使用新类执行以下操作:

 // Use new class
 IQueryable<SellingItem> sellingitems = db.SellingItems
.GroupBy(s => new { s.ItemId ,s.Condition,s.ExpInDays})
.Select(si => new NewClass
{
    Item = si.First().Item,
    Condition = si.First().Condition,
    ExpInDays = si.First().ExpInDays,
    Qty = si.Sum(i => i.Qty),
});
//使用新类
IQueryable sellingitems=db.sellingitems
.GroupBy(s=>new{s.ItemId,s.Condition,s.ExpInDays})
.选择(si=>NewClass)
{
Item=si.First().Item,
条件=si.First().条件,
ExpInDays=si.First().ExpInDays,
数量=总数量(i=>i数量),
});

你能发布你的解决方法吗?这样我们就可以看到你的问题“解决”了吗?我还没有写代码,只是想知道该使用哪种解决方法,但我会尽快添加它们。不,我从那里来阅读我的问题,我不问错误是什么,我问我的解决方法是否好是的,现在我得到了,我正在为结果写一个新的类,希望它能工作,然后会回来更新,谢谢大家!!为什么我不能使用同一个类而不是NewClass?因为在上的注释中的原因,正如我在回答中所述:)简而言之,这是因为
SellingItem
代表整个表,如果您只需要选定的数据片段,您应该创建一个与特定用例匹配的类。。。或者只是使用一个简单的匿名对象。祝你好运,我的朋友。希望我能帮上忙!让我们。
 // Use new class
 IQueryable<SellingItem> sellingitems = db.SellingItems
.GroupBy(s => new { s.ItemId ,s.Condition,s.ExpInDays})
.Select(si => new NewClass
{
    Item = si.First().Item,
    Condition = si.First().Condition,
    ExpInDays = si.First().ExpInDays,
    Qty = si.Sum(i => i.Qty),
});