C# 错误';Int32解析(System.String)和#x27;
我是个新手,学林克。 我在编码方面有一些问题。我使用convert.Int32将列从字符串转换为整数。我的返回函数使用列表。所以在我的代码中,我确实需要foreach将查询数据移动到列表中,但是当我运行此代码时出现错误时。错误始终显示在“foreach”上,并显示错误消息: LINQ to Entities无法识别方法“Int32到Int32(System.String)”方法,并且无法将此方法转换为存储表达式 这是我的代码:C# 错误';Int32解析(System.String)和#x27;,c#,linq,linq-to-entities,C#,Linq,Linq To Entities,我是个新手,学林克。 我在编码方面有一些问题。我使用convert.Int32将列从字符串转换为整数。我的返回函数使用列表。所以在我的代码中,我确实需要foreach将查询数据移动到列表中,但是当我运行此代码时出现错误时。错误始终显示在“foreach”上,并显示错误消息: LINQ to Entities无法识别方法“Int32到Int32(System.String)”方法,并且无法将此方法转换为存储表达式 这是我的代码: var query = from o in _invoiceRepo
var query = from o in _invoiceRepository.Table
join opv in _opvRepository.Table on o.Id equals opv.InvoiceId
join pv in _pvRepository.Table on opv.ProductVariantId equals pv.Id
join p in _pRepository.Table on pv.ProductId equals p.Id
where !o.Deleted && EndDate >= o.CreatedOnUtc && StartDate <= o.CreatedOnUtc
&& opv.SubstitutedBy != null && o.PaidDateUtc != null
orderby o.GHOrderId, pv.Sku
select new
{
OrderId = o.GHOrderId,
SKU = pv.Sku,
Brand = p.BrandII,
Description = pv.Description,
Size = p.Size,
OrderQty = Convert.ToInt32(opv.OrderQuantity)
};
var query2 = from row in query
group row by new
{ row.OrderId, row.SKU, row.Brand, row.Description, row.Size } into result
select new
{
OrderId = result.Key.OrderId,
SKU = result.Key.SKU,
Brand = result.Key.Brand,
Description = result.Key.Description,
Size = result.Key.Size,
OrderQty = result.Sum(row => row.OrderQty).ToString("n2")
};
List<string> _tempdata = new List<string>();
foreach (var order in query.ToList())
{
_tempdata.Add(order.OrderId.ToString() + ';' + order.SKU.ToString() + ';' + order.Brand.ToString() + ';' + order.Description.ToString() + ';' + order.Size.ToString() + ';' + order.OrderQty.ToString());
}
var query=from\u invoiceRepository.Table中的o
在o.Id上的_opvRepository.Table中加入opv等于opv.InvoiceId
在opv.productVariatid=pv.Id上的pvRepository.Table中加入pv
在pv.ProductId上的_pRepository.Table中加入p等于p.Id
哪里o、 已删除(&&EndDate>=o.CreatedOnUtc&&StartDate行.OrderQty).ToString(“n2”)
};
列表_tempdata=新列表();
foreach(query.ToList()中的变量顺序)
{
_tempdata.Add(order.OrderId.ToString()+”;“+order.SKU.ToString()+”;“+order.Brand.ToString()+”;“+order.Description.ToString()+”;“+order.Size.ToString()+”;”+order.OrderQty.ToString());
}
我不知道怎么解决这个问题。。。
我需要你的帮助
谢谢。由于例外情况,您可以在linq中将此方法(或大多数其他方法)调用到实体。这是因为您键入的代码必须转换为sql,并且除了少数手动移植的方法外,无法将.net方法转换为sql
但是,您可以做的是在linq to entities查询中执行除此之外的所有需要的操作,然后调用.AsEnumerable()。任何超过该语句的内容都将在.net端运行,而不是在sql server上运行。如果你用谷歌搜索这个错误,你会在第一篇文章中找到答案。发布不必要的大量代码以及之前已解决并讨论过一百万次的异常将毫无用处。请尝试用以下内容替换此行:
OrderQty=Convert.ToInt32(opv.OrderQty)
:OrderQty=(int)opv.OrderQuantity
@LasseV.Karlsen-转换和铸造是两件完全不同的事情。这很可能在这里的大多数情况下都会起作用,但根据他传递的字符串,他只需要处理一个不同的例外。啊,我没注意到他说的是“字符串”。究竟为什么OrderQuantity
是一个字符串?另外,我在搜索时发现的第一个google条目给了我一个不同的问题,转换用于where的参数,这与他转换查询检索到的值不同,因此不能简单地将其移出查询。