Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataTable GroupBy和检查条件_C#_Linq_Datatable - Fatal编程技术网

C# DataTable GroupBy和检查条件

C# DataTable GroupBy和检查条件,c#,linq,datatable,C#,Linq,Datatable,我有一个数据表,如下图所示。datatable通常包含多个相同的“UnitNr” 当我对数据表进行分组时,我试图实现一种行为,即检查特定的“事件”是否发生在特定的“UnitNr”上。例如(因此它将过滤掉事件为“第一期”的“UnitNr”) 从任何不需要的数据中筛选数据表时,数据应转到将绑定到gridview的新数据表 public static void GetNextPayments(RadGridView Grid) { DataTable dt; using (MySqlC

我有一个数据表,如下图所示。datatable通常包含多个相同的“UnitNr”

当我对数据表进行分组时,我试图实现一种行为,即检查特定的“事件”是否发生在特定的“UnitNr”上。例如(因此它将过滤掉事件为“第一期”的“UnitNr”)

从任何不需要的数据中筛选数据表时,数据应转到将绑定到gridview的新数据表

public static void GetNextPayments(RadGridView Grid)
{
    DataTable dt;
    using (MySqlConnection con = new MySqlConnection(Varribles.ConString))
    {
        con.Open();
        string query = "SELECT Date, ClientID, Event, FirstInstallment, SecondInstallment, UnitNr, FirstInstallmentPayDate, SecondInstallmentPayDate FROM Customers WHERE Approved = 'Approved';";
        using (MySqlDataAdapter adapter = new MySqlDataAdapter(query, con))
        {
            DataSet ds = new DataSet();
            adapter.Fill(ds);
            dt = ds.Tables[0];
            adapter.Dispose();
        }
        con.Dispose();
        con.Close();
    }
    test(dt);
}
现在我将数据表分组,如下所示

更新-以下内容已被修改

下面的代码仍然返回第一次分期付款时的值。不应该这样

 private static void test(DataTable dt)
    {
        var groups = dt.AsEnumerable()
.GroupBy(x => x.Field<string>("UnitNr"))
.Where(grp => grp.Any(x => x.Field<string>("Event") != "1st installment" && x.Field<string>("Event") == "Deposit"));

        foreach (var group in groups)
        {
            Console.WriteLine(group.Key);

        }
    }
专用静态无效测试(数据表dt)
{
变量组=dt.AsEnumerable()
.GroupBy(x=>x.Field(“UnitNr”))
其中(grp=>grp.Any(x=>x.Field(“事件”)!=“第一期”和&x.Field(“事件”)=“存款”));
foreach(组中的var组)
{
控制台写入线(组键);
}
}

代码>考虑添加<代码>。在哪里(RG=>Rg。任何(R= > R.field(“事件”)!= SKIPEVER))。因此考虑添加<代码>。在何处(RG=>Rg。任何(R=>R.field(“事件”)!=SKIPEVER))< /代码>。