我有喜歡C#:如何使用Linq/Lambda比較兩個集合(System.Collection.Generic.List <T>)?
List<String> l_lstOne = new List<String> { "100", "1X0", "X11", "XXX" },
l_lstTwo = new List<String> { "000", "110", "100", "000" };
的String
兩個集合,我需要比較兩個列表和使第二列表像
{ "000", "1X0", "X00", "XXX" }
注: 兩個列表將包含相同的numbe的元素和每個元素的長度將是相同的。
時比較結果爲像
- 如果
l_lstOne
第m元件具有在第n個位置上的「X」,在l_lstTwo第m的第n個位置應當由「X」所取代。
例
l_lstOne l_lstTwo Output
100 000 000
1X0 110 1X0
X11 100 X00
因此,要解決這個我用嵌套的for循環,這裏是我的源代碼,
for (int l_nIndex = 0; l_nIndex < l_lstTwo.Count; l_nIndex++)
{
String l_strX = String.Empty;
for (int l_nInnerIndex = 0; l_nInnerIndex < l_lstTwo[l_nInnerIndex].Length; l_nInnerIndex++)
{
l_strX += l_lstOne[l_nIndex][l_nInnerIndex] == 'X' ? 'X' : l_lstTwo[l_nIndex][l_nInnerIndex];
}
l_lstTwo[l_nIndex] = l_strX;
}
此代碼工作正常,但事情是,其花費更多的時間來執行,即幾乎600毫秒來處理200000個元素並且每個長度爲16.
此外我需要一個Linq或Lambda方法來解決這個問題。所以請幫助我做到這一點。提前致謝。
@Robert哈維:謝謝你......但我不明白你的'Sort'是什麼意思。 – 2012-03-05 06:20:23