查询数据集C#内部

时间:2011-03-31 05:07:49

标签: c# .net dataset rowfilter defaultview

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

SELECT ID,USER,PRODUCT,COUNT FROM PRODUCTION

不使用where子句,我需要从数据集中导出一些结果。假设我想获得具有最大产品数量的用户的用户和产品计数。 (我想通过使用现有的数据集来实现。我不能从数据集中得到它。)

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

3 个答案:

答案 0 :(得分:8)

传统的SQL查询无法应用于DataSet。但是,以下 是可能的:

快速而脏的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转换为可以执行LINQ查询的IEnumerable。如果您不熟悉LINQ,请查看this introduction

答案 1 :(得分: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]);
    }

另见this link

答案 2 :(得分:0)

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

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