這應該很簡單,但我無法弄清楚。我有一個Datatable,它具有名稱,年齡,其中有行的學生名稱,但然後多行特殊學生'姓名'克里斯和約翰的。最終結果應該有一個表,除了Chris和John之外的所有行都會被合併到一個名爲Other的行中,並與他們的年齡相加。c#使用LiNQ刪除Datatable中的多行
即。
NAME | AGE
Tom | 20
John | 15
Peter | 5
John | 2
Tom | 33
Chris | 20
最終結果是:
NAME | AGE
Tom | 20
Peter | 5
Tom | 33
Other | 37
這是即時通訊做現在:
var others = table.AsEnumerable().Where(x => x["NAME"].ToString().Equals("Chris") || x["NAME"].ToString().Equals("John"));
var tmpOthers = 0;
foreach (DataRow otherRow in others)
tmpOthers += decimal.Parse(otherRow["AGE"].ToString());
table = table.AsEnumerable().Where(x => !x["NAME"].ToString().Equals("Chris") || !x["NAME"].ToString().Equals("John")).CopyToDataTable();
table.Add(//OTHER-ROW-Here)
這工作,但我知道必須有一個單一的LINQ做到這一點更簡單的方法聲明。我也無法將table.Rows.Remove放在同一個for循環中,因爲迭代更改。
RemoveRange? https://msdn.microsoft.com/zh-tw/library/system.data.entity.dbset.removerange(v=vs.113).aspx – MichaelMao
「name」是否始終以大寫字母開頭? –