如何使用LinQ To Object把數(shù)組或DataTable中的數(shù)據(jù)進(jìn)行向上匯總
最近搞造價(jià)系統(tǒng)時(shí)遇到一些需要匯總的指標(biāo)數(shù)據(jù)
類(lèi)似下面的結(jié)構(gòu)
指標(biāo)A 1000
指標(biāo)B 500
指標(biāo)C 500
指標(biāo)A = B+C
當(dāng)我們需要對(duì)這些數(shù)值進(jìn)行校驗(yàn)時(shí),實(shí)現(xiàn)的方法有很多種,數(shù)據(jù)庫(kù)里寫(xiě)存儲(chǔ)過(guò)程去更新每行數(shù)據(jù),
或者我們?cè)诔绦蛑斜闅v等等,但用起來(lái)都挺煩瑣的。
這時(shí)候想到了 Linq To Object 這個(gè)技術(shù)
簡(jiǎn)單說(shuō)下 Linq 它是.Net Framework 3.5 引入的新技術(shù)
它允許編寫(xiě)C#或者Visual Basic代碼以查詢(xún)數(shù)據(jù)庫(kù)相同的方式操作內(nèi)存數(shù)據(jù)。
主要 有幾點(diǎn)好處 簡(jiǎn)單 和 SQL 的語(yǔ)法差不多舉個(gè)例子來(lái)說(shuō)
這里有兩個(gè)數(shù)組 需要你找出 A 與 B 都存在的元素
A=int[]{1,2,3,4,5,6,7,8,0}; B=int[]{2,4,7,8,9}
一般我們會(huì)這么寫(xiě)

如果使用 Linq的話(huà)

看起來(lái)非常的清爽,而且和SQL的語(yǔ)法類(lèi)似 我們可以快速的掌握。
至于具體的語(yǔ)法和介紹 大家可以自行的查詢(xún)http://msdn.microsoft.com/zh-cn/library/vstudio/bb397926.aspx
說(shuō)回來(lái) 在我們的項(xiàng)目中如何使用呢?
例如最開(kāi)始的例子
指標(biāo)A 1000
指標(biāo)B 500
指標(biāo)C 500
指標(biāo)A = B+C
這里我定義一個(gè)實(shí)體類(lèi)
class CIndex{
string CIID;
string ParentCIID;
double Cost;
}
獲取所有指標(biāo)的數(shù)據(jù)到一個(gè)數(shù)組中。 listIndexs
注意例子中的指標(biāo)要按樹(shù)形順序排列好,然后我們從最底下的子節(jié)點(diǎn)往上更新數(shù)據(jù),
這樣可以避免先更新了父節(jié)點(diǎn)后,才發(fā)現(xiàn)子節(jié)點(diǎn)數(shù)據(jù)不對(duì)的問(wèn)題。
對(duì)數(shù)組從最后面的元素開(kāi)始遍歷

這樣就能很簡(jiǎn)單的完成對(duì)父子節(jié)點(diǎn)的計(jì)算。
項(xiàng)目中我們很多時(shí)候都會(huì)用到 DataTable 那么Linq這時(shí)候又該怎么處理呢?

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C#中Linq查詢(xún)基本操作使用實(shí)例
- c#中LINQ的基本用法實(shí)例
- C#中的Linq Intersect與Except方法使用實(shí)例
- LINQ 標(biāo)準(zhǔn)查詢(xún)操作符
- C# Linq讀取XML文件的實(shí)例
- linq語(yǔ)法基礎(chǔ)使用示例
- C#使用linq對(duì)數(shù)組進(jìn)行篩選排序的方法
- C#操作LINQ to SQL組件進(jìn)行數(shù)據(jù)庫(kù)建模的基本教程
- Linq to SQL Delete時(shí)遇到問(wèn)題的解決方法
- C#使用linq語(yǔ)句查詢(xún)數(shù)組中以特定字符開(kāi)頭元素的方法
相關(guān)文章
深入DropDownList用法的一些學(xué)習(xí)總結(jié)分析
本篇文章是對(duì)DropDownList的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
時(shí)間字符串轉(zhuǎn)換成日期對(duì)象datetime的方法
在遇到形如"2012-12-19T17:00:00Z"這樣的時(shí)間字符串時(shí),怎樣轉(zhuǎn)換到DateTime類(lèi)型呢,下面的方法可以解決2013-12-12
一個(gè)基于C#開(kāi)發(fā)的Excel轉(zhuǎn)Json工具使用教程
JSON吸引了工具構(gòu)建者的注意,它們開(kāi)發(fā)了用于重新格式化、驗(yàn)證和解析JSON的眾多工具,這不足為奇,下面這篇文章主要給大家介紹了一個(gè)基于C#開(kāi)發(fā)的Excel轉(zhuǎn)Json工具的相關(guān)資料,需要的朋友可以參考下2022-11-11
C#編程實(shí)現(xiàn)連接ACCESS數(shù)據(jù)庫(kù)實(shí)例詳解
這篇文章主要介紹了C#編程實(shí)現(xiàn)連接ACCESS數(shù)據(jù)庫(kù)的方法,以實(shí)例形式較為詳細(xì)的分析了C#連接access數(shù)據(jù)庫(kù)的具體步驟與相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
C#中使用IFormattable實(shí)現(xiàn)自定義格式化字符串輸出示例
這篇文章主要介紹了C#中使用IFormattable實(shí)現(xiàn)自定義格式字符串輸出示例,本文直接給出實(shí)例代碼,需要的朋友可以參考下2015-06-06
Unity3D實(shí)戰(zhàn)之答題系統(tǒng)的實(shí)現(xiàn)
本文將用Unity3D制作一個(gè)答題系統(tǒng),可以從文本文檔中提取題目和分?jǐn)?shù),然后綁定到UI上,在答題的過(guò)程中,自動(dòng)判斷分?jǐn)?shù),自動(dòng)判斷正確率。感興趣的可以學(xué)習(xí)一下2022-03-03
C#?Timer控件學(xué)習(xí)之使用Timer解決按鈕冪等性問(wèn)題
Timer控件又稱(chēng)定時(shí)器控件或計(jì)時(shí)器控件,該控件的主要作用是按一定的時(shí)間間隔周期性地觸發(fā)一個(gè)名為T(mén)ick的事件,因此在該事件的代碼中可以放置一些需要每隔一段時(shí)間重復(fù)執(zhí)行的程序段,這篇文章主要介紹了關(guān)于C#使用Timer解決按鈕冪等性問(wèn)題的相關(guān)資料,需要的朋友可以參考下2022-10-10

