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