Dynamic linq kämpft darum, den DBNull -Wert in Summe mit Gruppe durch (in DataTable) zu verwaltenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Dynamic linq kämpft darum, den DBNull -Wert in Summe mit Gruppe durch (in DataTable) zu verwalten

Post by Anonymous »

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;
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post