LINQ 中的 CopyToDataTable
CopyToDataTable in LINQ
参考这个我在WebForm1.aspx.cs
中添加了一个方法
但是当我添加和构建我的代码时出现错误
必须在顶级静态中定义扩展方法class; CustomLINQtoDataSetMethods 是嵌套的 class
必须在顶级静态中定义扩展方法class; CustomLINQtoDataSetMethods 是嵌套的 class
我这样做是因为我有网络方法
[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 不在智能列表中
dq 中的数据是
[0] = { ID = 1, OName = "Khn", RegNo = "AJ-24",Speed = "124" }
[1] = { ID = 2, OName = "hah", RegNo = "AL-91",Speed = "95" }
它准确地说明了问题所在。您必须在 public
not-nested
class 中定义扩展方法。如 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
放在 其他 class 中。确保它 在任何其他 class 之外 并且问题应该得到解决。
参考这个我在WebForm1.aspx.cs
中添加了一个方法但是当我添加和构建我的代码时出现错误
必须在顶级静态中定义扩展方法class; CustomLINQtoDataSetMethods 是嵌套的 class
必须在顶级静态中定义扩展方法class; CustomLINQtoDataSetMethods 是嵌套的 class
我这样做是因为我有网络方法
[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 不在智能列表中
dq 中的数据是
[0] = { ID = 1, OName = "Khn", RegNo = "AJ-24",Speed = "124" }
[1] = { ID = 2, OName = "hah", RegNo = "AL-91",Speed = "95" }
它准确地说明了问题所在。您必须在 public
not-nested
class 中定义扩展方法。如 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
放在 其他 class 中。确保它 在任何其他 class 之外 并且问题应该得到解决。