通过引用,我在WebForm1中添加了一个方法.aspx.cs
参考链接
但是当我添加和构建我的代码时,会出现错误
扩展方法必须在顶级静态类中定义;CustomLINQtoDataSetMethods 是一个嵌套类
扩展方法必须在顶级静态类中定义;CustomLINQtoDataSetMethods 是一个嵌套类
我这样做是因为我有网络方法
[WebMethod]
public static DataTable search_data(DateTime fromdate, DateTime todate, string regiondrop)
{
try
{
T1 ts = new T1();
var dq = (from vv in ts.tblVe
join rv in ts.tblReg on vv.ID equals rv.ID
join re in ts.tblRegi on rv.RID equals re.RID
where
re.Region == regiondrop
&& re.StartDate <= fromdate
&& re.EndDate >= todate
orderby
vv.ID,
rv.OwnerName
select new
{
ID = vv.ID,
ownername = rv.OwnerName,
RegNo = rv.RegNo,
Speed = rv.Speed,
});
var dt = dq.cop();
}
catch (Exception)
{
throw new Exception();
}
}
当我添加此行时 var dt = dq.cop(); 与这个问题参考 2 的参考和答案,则 CopyToDataTable 不在智能列表中
在 dq 中,数据是
[0] = { ID = 1, OName = "Khn", RegNo = "AJ-24",Speed = "124" }
[1] = { ID = 2, OName = "hah", RegNo = "AL-91",Speed = "95" }
它准确地说明了问题所在。您必须在public
not-nested
类中定义扩展方法。正如MSDN上提到的:
public static class CustomLINQtoDataSetMethods
{
public static DataTable CopyToDataTable<T>(this IEnumerable<T> source)
{
return new ObjectShredder<T>().Shred(source, null, null);
}
public static DataTable CopyToDataTable<T>(this IEnumerable<T> source,
DataTable table, LoadOption? options)
{
return new ObjectShredder<T>().Shred(source, table, options);
}
}
而且您很可能已将CustomLINQtoDataSetMethods
放在其他类中。 确保它在任何其他类之外,并且应该修复该问题。