将LINQ var传递给base add方法C#
我正在为我的网页创建一个DAL层,我第一次使用LINQ 目前,我有一个名为CargoTypeCollection的类,它运行如下查询:将LINQ var传递给base add方法C#,c#,.net,linq,linq-to-sql,linq-to-entities,C#,.net,Linq,Linq To Sql,Linq To Entities,我正在为我的网页创建一个DAL层,我第一次使用LINQ 目前,我有一个名为CargoTypeCollection的类,它运行如下查询: AHDBDataContext db = new AHDBDataContext(); var CargoTypes = from cargoTypes in db.cargoTypes select cargoTypes; 现在我想将CargoTypes变量传递给我的基本add类(只有Cargo
AHDBDataContext db = new AHDBDataContext();
var CargoTypes = from cargoTypes in db.cargoTypes
select cargoTypes;
现在我想将CargoTypes变量传递给我的基本add类(只有CargoTypeCollections从中继承)
这样做的原因是,我可以让不同的方法做不同的事情,但我不需要重复代码。
基本添加类类似于:
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
protected void baseAdd(dynamic CargoTypes)
试试这个:
protected void baseAdd(IQueryable<CargoType> cargoTypes)
您可以尝试使用通用存储库。泛型将解决您希望跨多个类型重用相同逻辑的问题。另一方面,存储库是为DAL提供额外提取的好方法。通过将泛型与存储库相结合,可以实现跨多个类型重用的DAL,而无需为每个类型编写类似的代码
不过,存储库是一个很深的主题,更不用说与泛型一起使用了。因此,我建议您寻找一些参考文章开始。例如,您可能想阅读这篇文章来了解它是什么样子。IEnumerable在这种方法中更好。我实际上不知道db.CargoTypes是什么类型?这只是我数据库中的一个表。@Michael-当你在Visual Studio中将鼠标悬停在db.cargoTypes上时,它显示的是什么类型?我想我通过将其更改为:var cargoTypes=from cargoTypes in db.cargoTypes select new CargoTypeEntity()解决了这个问题{CargoTypeID=CargoTypeID.CargoTypeID,CargoTypeName=cargoTypes.CargoTypeName,};@Michael-如果答案有效,别忘了标记。谢谢。
var CargoTypes = from cargoTypes in db.cargoTypes
select cargoTypes;