2012-01-24 118 views
0

我想寫一個linq查詢。Linq查詢幫助c#

我需要我的查詢採取2維數組(d)。它需要檢查d中的每個數組,如果第一個和最後一個元素不是空的,但其中的任何元素都是空的,它將刪除空元素。

{{test,"",test}, {test, test, test,"",test}} = {{test,test}, {test, test, test,test}} 

但我需要能夠保持空字符串所以不能只是尋找他們並刪除它們。

我希望我已經解釋得很好。

+0

我可以非常簡單地檢查linq中的第一個和最後一個元素,所以我做了如何檢查中間元素並在每個數組上得到結果的努力......不知道從哪裏開始.... – user101010101

+0

@ user101010101「,但我需要能夠保留空字符串,因此不能只搜索它們並將其刪除。」你打算如何保留他們? –

回答

1

也許

var out = input.Select(x => 
     ((!String.IsNullOrEmpty(x.FirstOrDefault())) 
     && (!String.IsNullOrEmpty(x.LastOrDefault()))) 
      ? x.Where(y => !String.IsNullOrEmpty(y)).ToArray() 
      : x).ToArray(); 

如果你只需要IEnumerables你或許可以去除ToArrays。

1

我想試試這個:

string test = "test"; 
var array = {{test,"",test}, {test, test, test,"",test}}; 

string[] TransformRow(string[] inputRow) 
{ 
    return intputRow.Where(cell => cell != string.Empty).ToArray(); 
} 

var validArray = array.Select(row => TransformRow(row));