Dynamic linq kämpft darum, den DBNull -Wert in Summe mit Gruppe durch (in DataTable) zu verwalten
Posted: 01 Mar 2025, 12:48
Ich verwende einen dynamischen LINQ auf dem DataTable, um konsolidierte Summierungen zu generieren. Alles funktioniert hervorragend, außer wenn ein Wert null für Spalte9 für die Summierung verwendet wird. Ich habe Nullexception '' Objekt kann nicht von dbnull auf andere Typen gegossen werden. ''. Alle diese Spalten werden von Benutzern dynamisch ausgewählt, einschließlich der Spalte für die Summe. < /P>
Code: Select all
public bool CreateConsolidation(string sum_Column) // e.g. Column9 will pass as sum_Column
{
var sum_str = "Sum(Convert.ToInt32(" + sum_Column + ")) as " + sum_Column;
var double_grouping = (dt_excel.AsEnumerable().AsQueryable()
.GroupBy("new (it.Column4, it.Column5, it.Column6, it.Column7, it.Column11 )", "it"))
.Select("new (Key.Column4 as Column4, Key.Column5 as Column5, Key.Column6 as Column6, Key.Column7 as Column7, Key.Column11 as Column11, Sum(new ( " + sum_str + " )) as QTY )").ToDynamicList();
//have to perform some other operations based on above result
return true;
}
< /code>
Gibt es eine Möglichkeit, diesen Nullwert für diese dynamische LINQ -Abfrage zu überprüfen? < /p>
Und ich möchte, dass das Ergebnis so etwas wie unten ist. Die erste Zeile muss den dbnull -Wert überprüfen. < /p>
public bool CreateConsolidation(string sum_Column) // e.g. Column9 will pass as sum_Column
{
var sum_str = "Sum(it." + sum_Column + " == DBNull.Value ? : Convert.ToInt32(it." + sum_Column + ")) as " + sum_Column;
var double_grouping = (dt_excel.AsEnumerable().AsQueryable()
.GroupBy("new (it.Column4, it.Column5, it.Column6, it.Column7, it.Column11 )", "it"))
.Select("new (Key.Column4 as Column4, Key.Column5 as Column5, Key.Column6 as Column6, Key.Column7 as Column7, Key.Column11 as Column11, Sum(new ( " + sum_str + " )) as QTY )").ToDynamicList();
//have to perform some other operations based on above result
return true;
}