参考这个我在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();参考和回答这个问题reference 2然后CopyToDataTable不在intellisence列表中
在dq中,数据是
[0] = { ID = 1, OName = "Khn", RegNo = "AJ-24",Speed = "124" }
[1] = { ID = 2, OName = "hah", RegNo = "AL-91",Speed = "95" }
答案 0 :(得分:1)
它准确地说明了问题所在。您必须在 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
置于其他类中。确保它在任何其他类的 之外,并且应该修复该问题。