結果をフィルタリングするために、データテーブルで VB の LINQ を使用しています。
m_oDataTable.Columns.Add("Name1", GetType(String))
m_oDataTable.Columns.Add("Name2", GetType(String))
m_oDataTable.Columns.Add("Time", GetType(Double))
Name1
ユーザーの選択によって、またはそれName2
に基づいてデータテーブルをフィルタリングしようとしています。
groupBy = "Name1"
'groupBy = "Name2"
データをグループ化しましたがSum
、目的のフィールドに移動できませんでした。
Dim test = From tab In m_oDataTable.AsEnumerable()
Group tab By groupDt = tab.Field(Of String)(groupBy) Into Group
Select Group
'Getting Error
Dim test2 = From tab In m_oDataTable.AsEnumerable()
Group tab By groupDt = tab.Field(Of String)(groupBy) Into Group
Select New With
{
.Grp = Key, ' Error in this line(Key is a type, cannot be used as a expression)
.Sum = Group.Sum(Function(r) Double.Parse(r.Item("Time").ToString()))
}
私はC#で試してみましたが、望ましい結果が得られました。しかし、VBには運がありません:(
var test = from tab in m_oDataTable.AsEnumerable()
group tab by tab.Field<string>(groupBy)
into groupDt
select new
{
Group = groupDt.Key,
Sum = groupDt.Sum(r => double.Parse(r["Time"].ToString()))
};
VBでこれを達成する方法は?