【发布时间】:2011-09-01 11:51:34
【问题描述】:
以下代码有效:
List<JsonStock> stock = new List<JsonStock>();
foreach(tblStock item in repository.Single(id).tblStocks)
stock.Add((JsonStock) item);
所以你自然会认为这段代码也可以工作:
List<JsonStock> stock = repository.Single(id).tblStocks.Cast<JsonStock>().ToList()
但我收到错误 Invalid cast operation - 有人知道为什么会发生这种情况吗?
更新
tblStocks 是 LINQ to SQL 对象 tblStock 的列表。
JsonStock 是 tblStock 类的简化版本,以 JSON 形式返回到网页对象。
以下运算符是为进行强制转换而构建的:
public partial class tblStock{
public static explicit operator JsonStock(tblStock stock){
JsonStock item = new JsonStock
{
boxes = stock.boxes,
boxtype = stock.tblBoxType.name,
boxtype_id = stock.boxtype_id,
grade = stock.grade,
packrate = stock.packrate,
weight = stock.weight
};
return item;
}
}
【问题讨论】:
-
tblStocks的类型是怎么定义的? -
只是一个想法,不确定这一点:
repository.Single(id).tblStocks返回JsonStock的数组或列表,因此当您尝试转换为JsonStock时,它会抱怨... -
@Marco - 不,它不应该抱怨。
-
tblStock 和 JsonStock 是什么关系?
-
假设 tblStocks 是 JsonStock 的 IEnumerable,您的代码应该可以工作。那么“tblStocks 中的内容”是什么?我假设那里还有继承的“JsonStock”类的对象,因为这会导致强制转换异常。