2013-07-29 86 views
1
List<object> li = new List <object>(Items); 
string name = ""; 
foreach (var item in Items) 
{ 
    name = item["title"].ToString(); 
} 
return name; 

使用此代碼片斷在一個列表返回每一個項目,我找不到改變返回輸出列表中的所有項目的方式。因爲它只返回最後一個項目。我怎樣才能讓每件物品都回來?從一個foreach

+2

創建一個新列表並返回它.. – Sayse

+1

這將有助於瞭解此方法消耗的位置 – Khan

+1

您希望他們如何返回?你想讓它們成爲一個單一的字符串嗎?你想要返回一個字符串或其他東西的列表... – Chris

回答

0

這只是返回一個列表,但它的作品有點荒謬。我個人只是一次返​​回整件事情。

List<object> li = new List <object>(Items); 
    string name = ""; 
    foreach (var item in Items) 
    { 
     yield return item["title"].ToString(); 
    } 
+1

'yield return'和'return'within方法之一?如果我沒有記錯,這將不會編譯。 –

+0

是的,我修正了它,謝謝我認爲它會抱怨並非所有的路徑都會返回 –

+0

您的代碼將無法編譯。分配不能在'yield return'中產生 – Romoku

5

你必須返回一個新的列表,在你的榜樣,你只是設置名稱爲當前的名字,然後在年底返回的名稱。由於循環遍歷所有元素,在返回之前,名稱將設置爲列表中的最終值。除此之外,您的返回類型爲string,除非您將li中的所有元素集中到一個字符串中,那麼您無法將列表作爲字符串返回。

List<string> newList = li.Select(x => x["title"].ToString()).ToList(); 

將創建一個新的字符串列表,其中每個元素是從源列表,li元素的稱號。

如果你真的想要返回一個字符串,你可以使用(我相信)String.Join或(這個我確定)Aggregate像這樣;

return li.Aggregate((c, n) => c["title"].ToString() + ", " + b["title"].ToString()); 

上面的代碼將返回字符串,它是逗號分隔的元素標題列表。

0

如您所知,方法可以返回一個值並返回語句。所以你應該把所有的項目都歸爲IEnumerable(List,Array等)。

return Items.Select(x => x["Title"].ToString()).ToArray(); 
0

你需要返回整個列表並提取每個元素,當你想使用它們。除非您將它們保存在某種容器您不能一次通過所有這些元素(陣列,例如)。

而且,這並沒有多大意義,如果你已經有了一個List對象來容納它們。 CLR的List<T>類型是可調整長度的數組,而不是傳統的鏈表。

如果您可以更詳細地瞭解您的確切場景,我們可以幫助您更好地完成。