Com*_*umb 3 c# linq asp.net-mvc
我对LINQ很新,我最初使用它的一个尝试必须超级复杂!
我试图在这个Stack Over问题中调整已接受的答案.
我这样写了:
using (var ctx = new MyEntities())
{
var q = ctx.tblPrices.OrderByDescending(x => x.Cost)
.GroupBy(x => x.ItemID)
.Select(g => new {g, count = g.Count()})
.SelectMany(t => t.g.Select(b => b).Zip(Enumerable.Range(1, t.count), (j, i) => new {j.WebPrice, j.PriceID, j.ItemID}));
foreach (var i in q)
{
sb.AppendFormat("Id = {0}, Name = {1}, ItemId = {2}<hr/>", i.WebPrice, i.PriceID, i.ItemID);
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,我想从不同供应商那里退回相同商品的最便宜价格.
但是,当我运行项目时,我得到以下很长的错误消息,我不知道它意味着什么.但它看起来很严重!
LINQ to Entities无法识别方法'System.Collections.Generic.IEnumerable
1[<>f__AnonymousType53 [System.Nullable1[System.Decimal], System.Int32,System.Int32]] Zip[tblPrice,Int32,<>f__AnonymousType53](System.Collections.Generic.IEnumerable1[MyProjectMVC.Models.tblPrice], System.Collections.Generic.IEnumerable1 [System.Int32],System.Func3[MyProjectMVC.Models.tblPrice,System.Int32, <>f__AnonymousType53 [System.Nullable`1 [System .Decimal],System.Int32,System.Int32]])'方法,并且此方法无法转换为商店表达式.
任何帮助将不胜感激.
@Adil Mammadov对,因为LINQ无法将方法转换为SQL.
为避免此问题,您有几种解决方案:
我想在你的情况下问题可以像这样解决:
var q = ctx.tblPrices.OrderByDescending(x => x.Cost)
.ToList()
.GroupBy(x => x.ItemID)
.Select(g => new {g, count = g.Count()})
.SelectMany(t => t.g.Select(b => b).Zip(Enumerable.Range(1, t.count), (j, i) => new {j.WebPrice, j.PriceID, j.ItemID}));
Run Code Online (Sandbox Code Playgroud)
或者甚至像这样:
var q = ctx.tblPrices.OrderByDescending(x => x.Cost)
.GroupBy(x => x.ItemID)
.Select(g => new {g, count = g.Count()})
.ToList()
.SelectMany(t => t.g.Select(b => b).Zip(Enumerable.Range(1, t.count), (j, i) => new {j.WebPrice, j.PriceID, j.ItemID}));
Run Code Online (Sandbox Code Playgroud)
您也可以查看我的答案.
| 归档时间: |
|
| 查看次数: |
2500 次 |
| 最近记录: |