2015-09-01 100 views
0

但是,這段代碼測試正確我想知道有什麼是不正確的,因爲3嵌套SELECT()。有可能用2個嵌套的SELECT()重寫代碼?是否可以重寫代碼以減少選擇的數量?

var sums = Enumerable.Range(1, int.Parse(Console.ReadLine())) 
    .Select(x => Console.ReadLine()) 
     .Select(y => y.Split(' ') 
      .Select(int.Parse).Sum()); 
+1

你不必三個嵌套'選擇',你有兩個... –

+0

如果你需要所有數字的總和,你可以結合其中的前兩個。 – vittore

+2

_ [我可以在Stack Overflow上發佈關於**優化代碼**的問題嗎?....不,它不是最好的地方 - 雖然它是關於主題的,但是對於這樣的問題有更好的地方。您可以將代碼複製到代碼審查 - 但請確保閱讀他們的幫助中心,看看他們對一個好問題的期望是什麼](http://meta.stackoverflow.com/questions/261841/can-i-post-問題 - 關於優化的代碼上堆棧溢出)_。如果你的意圖是通過微妙的_sugar syntax_ – MickyD

回答

0

您可以用斯普利特的ReadLine結合:

var sums = Enumerable.Range(1, int.Parse(Console.ReadLine())) 
    .Select(x => Console.ReadLine().Split(' ').Select(int.Parse).Sum()); 
0

您可以結合第一和​​第二

var sums = Enumerable.Range(1, int.Parse(Console.ReadLine())) 
      .Select(x => Console.ReadLine().Split(' ').Convert<Int64>().Sum()); 

如果你只需要總和(這是不是你目前的代碼正在做)

var sum = Enumerable.Range(1, int.Parse(Console.ReadLine())) 
     .SelectMany(x=>Console.ReadLine().Split(' ').Convert<Int64>()) 
     .Sum() 
+0

.Convert ()? –

+2

整數列表的總和可以大於int的最大大小。 – Blorgbeard

+0

有字符串數組這個方法嗎?和Convert.ToInt32一樣嗎? –