数据表分组依据并检查条件

时间:2019-03-08 21:37:51

标签: c# linq 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);

        }
    }

0 个答案:

没有答案