我正在为我的网页创建一个DAL图层,我第一次使用LINQ。
目前我有一个名为CargoTypeCollection的类,它运行如下查询:
AHDBDataContext db = new AHDBDataContext();
var CargoTypes = from cargoTypes in db.cargoTypes
select cargoTypes;
现在我想将CargoTypes变量传递给我的基本添加类(只是CargoTypeCollections继承)
原因是这样我可以有不同的方法做不同的事情,但我不需要重复代码。 Base add class类似于:
protected void baseAdd(var CargoTypes)
{
foreach (var cargo in CargoTypes)
{
CargoTypeEntity cargo = new CargoTypeEntity();
cargo.CargoTypeID = cargo.CargoTypeId;
cargo.CargoName = cargo.CargoName;
CargoTypes.Add(Cargo)
}
}
(不介意我没有切割和粘贴的几个错字)
但显然这不起作用,因为我不能在方法签名中使用var。
答案 0 :(得分:2)
您可以尝试使用通用存储库。 Generics 将解决您希望跨多种类型重用相同逻辑的问题。另一方面,存储库是为DAL提供额外提取的好方法。通过将泛型与存储库相结合,您可以实现可在多种类型中重用的DAL,而无需为每种类型编写类似的代码。
存储库虽然是一个很深入的主题,但并不是说将它与泛型一起使用。所以我建议你寻找一些参考文章来开始。例如,您可能希望阅读本文,以了解generic repository的含义。
答案 1 :(得分:1)
试试这个:
protected void baseAdd(IQueryable<CargoType> cargoTypes)
下面的代码会将CargoTypes
设置为IQueryable<T>
,其中T是“db.cargoTypes”元素的类型。
var CargoTypes = from cargoTypes in db.cargoTypes
select cargoTypes;
答案 2 :(得分:0)
您可以使用动态,例如
protected void baseAdd(dynamic CargoTypes)