我将我的应用程序.Net Framework版本从3.5升级到4.5.1,并且我还将目标版本从3.5更改为4.5.1。我的应用程序使用Linq to SQL ..在我的应用程序中我正在使用类库,在类库中我需要在通用列表中传递多个参数...
在数据访问层我有方法,我试图将Linq生成的多个类传递给Sql。 (tblaccount,vendorCategory)
internal class BasicDataDAO
{
internal List<tblaccount, vendorCategory> GetAllvendor()
{
using (CommonDataContext VendorDC = new CommonDataContext(Settings.ConnectionString))
{
VendorDC.DeferredLoadingEnabled = true;
return (from V in VendorDC.tblaccounts
join C in VendorDC.vendorCategories on V.CatID equals C.Vendor_CatID
where V.Sys_AC_type == 7
select new
{
V.ID,
V.ACCOUNT,
V.field2,
V.contactDetails,
V.Remarks,
V.field3,
V.field1,
V.email,
V.fax,
C.vendor_CategoryName
}).ToList();
}
}
}
这里我是如何处理业务层
中的public List<tblaccount, vendorCategory> GetAllVendors()
{
BasicDataDAO dao = new BasicDataDAO();
return dao.GetAllvendor();
}
但我在数据和业务层中都收到此错误
使用泛型类型System.Collections.Generic.List需要1个类型参数
如何实现此任务,您可以在Generic List中传递linq生成的多个类?
虽然我已将.Net Framework从3.5升级到4.5.1但仍然无法在类库中引用System.Tuple类
答案 0 :(得分:4)
您无法使用两个类型参数声明列表。
您可以改为使用Tuple<T1, T2>
:List<Tuple<tblaccount, vendorCategory>>
或使用2个属性创建自己的类。
但是看看你的代码,看起来你正试图将匿名类型实例作为方法结果返回。这不是匿名类型的用途:
您无法声明字段,属性,事件或返回类型 具有匿名类型的方法。同样,你不能声明 方法,属性,构造函数或索引器的形式参数 有匿名类型。传递匿名类型或集合 包含匿名类型,作为方法的参数,您可以 将参数声明为类型对象。但是,做到这一点就失败了 强打字的目的。 如果您必须存储查询结果或传递它们 在方法边界之外,考虑使用普通的命名结构 或类而不是匿名类型。
来自Anonymous Types (C# Programming Guide) 的
按照指南创建自己的类以保存查询结果,并将方法声明为List<MyClass>
。
答案 1 :(得分:0)
使用iQueryable Class返回匿名类型
public IQueryable GetAllvendor()
{
CommonDataContext VendorDC = new CommonDataContext(Settings.ConnectionString);
{
VendorDC.DeferredLoadingEnabled = false;
var List = (from V in VendorDC.tblaccounts
join C in VendorDC.vendorCategories on V.CatID equals C.Vendor_CatID
where V.Sys_AC_type == 7
select new
{
V.ID,
V.ACCOUNT,
V.field2,
V.contactDetails,
V.Remarks,
V.field3,
V.field1,
V.email,
V.fax,
C.vendor_CategoryName
});
return List;
}
}
并在主叫网站上
public IQueryable GetAllVendors()
{
BasicDataDAO dao = new BasicDataDAO();
return dao.GetAllvendor();
}