Linq2SQL“本地序列不能在LINQ to SQL中使用”错误
|
我有一段代码,它结合了内存列表和数据库中保存的一些数据.这在我的单元测试中运行得很好(使用一个使用List的模拟Linq2SqlRepository). public IRepository<OrderItem> orderItems { get; set; }
private List<OrderHeld> _releasedOrders = null;
private List<OrderHeld> releasedOrders
{
get
{
if (_releasedOrders == null)
{
_releasedOrders = new List<nOrderHeld>();
}
return _releasedOrders;
}
}
.....
public int GetReleasedCount(OrderItem orderItem)
{
int? total =
(
from item in orderItems.All
join releasedOrder in releasedOrders
on item.OrderID equals releasedOrder.OrderID
where item.ProductID == orderItem.ProductID
select new
{
item.Quantity,}
).Sum(x => (int?)x.Quantity);
return total.HasValue ? total.Value : 0;
}
当我对数据库运行它时,我收到一个我不太懂的错误.
我究竟做错了什么? 我猜这与orderItems在数据库上并且releasedItems在内存中的事实有关. 编辑 我根据给出的答案更改了我的代码(谢谢大家) public int GetReleasedCount(OrderItem orderItem)
{
var releasedOrderIDs = releasedOrders.Select(x => x.OrderID);
int? total =
(
from item in orderItems.All
where releasedOrderIDs.Contains(item.OrderID)
&& item.ProductID == orderItem.ProductID
select new
{
item.Quantity,}
).Sum(x => (int?)x.Quantity);
return total.HasValue ? total.Value : 0;
}
解决方法
你是对的,你不能使用LINQ将表连接到List. 看看这个链接: http://flatlinerdoa.spaces.live.com/Blog/cns!17124D03A9A052B0!455.entry 他建议使用Contains()方法,但你必须使用它来查看它是否适合你的需要. (编辑:百科站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql-server – 如何阻止SQL Server将信息行记录到SQLFT日志
- sql-server-2008 – SELECT/UPDATE上的死锁
- sql – 使用输出在merge语句中设置变量
- sql-server-2005 – 为什么SQL Server在运行参数化查询时不
- sqlserver日志传送有何优点?怎样运用?
- sql-server – 我应该在所有触发器上添加SET NOCOUNT吗?
- 小议sqlserver数据库主键选取策略
- 在SQL查询中用’*’替换电子邮件地址中的某些字符
- wcf – 如何从自定义位置读取app.config,即从.NET中的数据库
- sql – 增加Ms Access Insert性能

