gpt4 book ai didi

asp.net - 将 linq 查询结果转换为数据表 C#

转载 作者:行者123 更新时间:2023-12-02 17:59:22 24 4
gpt4 key购买 nike

我想将linq查询结果转换为数据表,以便我可以将数据表分配给GridView以将其显示在asp页面上。

但是我无法将结果转换为数据表,我的代码中没有获取 CopyToTable() 方法。

请告诉我我在这里做错了什么?

 var gradeData = (from data in oAngieCtxt.prc_ShopInstanceCustomersData(Convert.ToInt32(this.ShopInstanceID), 10000, false)
.Where( row => row.RecievedPoints != "n/a" )
.GroupBy(row => new { row.Name })
.Select(g => new GroupedPoints()
{
Name = g.Key.Name,
TotalPoints = g.Sum(x => Convert.ToDouble(x.RecievedPoints) * (x.Weightage.ToString() == "0.00" ? 1 : Convert.ToDouble(x.Weightage)))
})
select data).ToList();

DataTable dt = gradeData --gradeData.CopyToTable()

注意:可以引用 dataextentions dll。

提前致谢

最佳答案

您应该得到DataTableExtensions.CopyToDataTable

删除ToList() .

CopyToDataTable 是 IEnumerable<DataRow>扩展(不幸的是)。

下面有一个使用自定义 CopyToDataTable 扩展方法的解决方案。

var gradeData = (from data in oAngieCtxt.prc_ShopInstanceCustomersData(
Convert.ToInt32(this.ShopInstanceID), 10000, false)
.Where( row => row.RecievedPoints != "n/a" )
.GroupBy(row => new { row.Name })
.Select(g => new
{
Name = g.Key.Name,
TotalPoints = g.Sum(x => Convert.ToDouble(x.RecievedPoints)
* (x.Weightage.ToString() == "0.00" ? 1
: Convert.ToDouble(x.Weightage)))
})
select data);

var dt = gradeData.CopyToDataTable();

编辑:

这是 CopyToDataTable 的更有用的实现DataRow 没有类型限制。

  public static class DataSetLinqOperators
{
public static DataTable CopyToDataTable<T>(this IEnumerable<T> source)
{
//you find the ObjectShredder implementation on the blog wich was linked.
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);
}

}

关于asp.net - 将 linq 查询结果转换为数据表 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18608959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com