3

我有一个由某个查询设置的 ADO.NET 数据集,比如说

SELECT ID,USER,PRODUCT,COUNT FROM PRODUCTION

在不使用 where 子句的情况下,我需要从数据集中得出一些结果。假设我想获取产品数量最多的用户的用户和产品数量。(我想通过使用现有的数据集来做到这一点。我不能从数据集中得到它。)

知道在数据集中查询的方法吗?由于有数据表,我的想法是有一些方法可以查询它。

4

3 回答 3

8

传统的 SQL 查询不能应用于 DataSet。然而,以下可能的:

Quick-and-dirty LINQ 示例:(它不返回 DataTable,而是一个包含匿名类型的列表):

var joinedResult = dataTable1
  // filtering:
  .Select("MyColumn = 'value'")
  // joining tables:
  .Join(
    dataTable2.AsEnumerable(), 
    row => row.Field<long>("PrimaryKeyField"), 
    row => row.Field<long?>("ForeignKeyField"),
    // selecting a custom result:
    (row1, row2) => new { AnotherColumn = row1.Field<string>("AnotherColumn") });

AsEnumerable将 DataTable 转换为IEnumerable可以对其执行 LINQ 查询的。如果您是 LINQ 新手,请查看此介绍

于 2011-03-31T05:48:30.790 回答
2

是的,您可以使用DataTable.Select方法。

DataTable table = DataSet1.Tables["Orders"];
    // Presuming the DataTable has a column named Date.
    string expression;
    expression = "Date > #1/1/00#";
    DataRow[] foundRows;

    // Use the Select method to find all rows matching the filter.
    foundRows = table.Select(expression);

    // Print column 0 of each returned row.
    for(int i = 0; i < foundRows.Length; i ++)
    {
        Console.WriteLine(foundRows[i][0]);
    }

另请参阅此链接

于 2011-03-31T05:10:06.860 回答
0

您可以使用 LINQ to DataSet 对 Dataset 对象进行跨表查询:

msdn.microsoft.com/en-us/library/bb386969.aspx

于 2012-10-12T17:30:11.160 回答