我有一个填充的数据表,如下所示。数据表通常包含多个相同的“ 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);
}
}