11
A
回答
19
你爲什麼不使用string.Join
本身?
string.Join("<br/>", collection.Select(e => e.TextProp).ToArray());
7
正常的方法是使用聚合運營商(Aggregate
,Sum
,Average
等)中的一個,但它完全取決於類型和你想要做什麼。你對什麼類型感興趣?
編輯:好的,所以你想連接字符串...我不認爲有什麼會在LINQ to SQL本身做到這一點。選項:
- 寫存儲過程或TVF做到在SQL
- 取在LINQ各個串到SQL並連接回客戶端
12
可以使用聚合方法...
var myResults = (from myString in MyStrings
select myString)
.Aggregate(string.Empty, (results, nextString)
=> string.Format("{0}<br />{1}", results, nextString));
或
var myResults = MyStrings.Aggregate(string.Empty, (results, nextString)
=> string.Format("{0}<br />{1}", results, nextString));
3
這裏的大多數解決方案都,如果你有大量的值要concatonate效率非常低, 。而且,它們並不全是可讀的。如果你經常這樣做,那麼建立你自己的擴展方法是值得的。下面的實現允許您執行等效的string.Join(", ", arrayOfStrings)
,其中arrayOfStrings可以是IEnumerable<T>
,分隔符可以是任何對象。它允許你做這樣的事情:
var names = new [] { "Fred", "Barney", "Wilma", "Betty" };
var list = names
.Where(n => n.Contains("e"))
.Join(", ");
兩件事情我喜歡這個有:
- 很LINQ方面非常可讀的。
- 它非常高效,因爲它使用StringBuilder並避免在數據庫場景(L2S,L2E或L2Nh)中重複評估枚舉兩次。
public static string Join<TItem,TSep>(
this IEnumerable<TItem> enuml,
TSep separator)
{
if (null == enuml) return string.Empty;
var sb = new StringBuilder();
using (var enumr = enuml.GetEnumerator())
{
if (null != enumr && enumr.MoveNext())
{
sb.Append(enumr.Current);
while (enumr.MoveNext())
{
sb.Append(separator).Append(enumr.Current);
}
}
}
return sb.ToString();
}
相關問題
- 1. 當字符串包含標點符號時檢查字符串是否相等
- 2. 字符串[,]字符串數組相當於用C
- 3. 當字符串相當於旋轉
- 4. IEnumerable的String.Join(字符串,字符串[])的模擬
- 5. 在PHP中是否有相當於C#的逐字字符串文字?
- 6. 檢查字符串x是否等於字符串中的任何字符串[]
- 7. Bash相當於Python的字符串文字用於utf字符串轉換
- 8. C#確定字符串中的所有字符是否相同
- 9. AWK確定字符串中的所有字符是否相同?
- 10. unicode字符串相當於包含
- 11. btrace相當於字符串replaceAll
- 12. C#字符串比較相當於假
- 13. 加入字符串[]不使用string.Join
- 14. 忽略空字符串的String.Join方法?
- 15. Datatable列轉換爲string.join字符串
- 16. LINQ:的string.join列表,但一個字符添加到該字符串事先
- 17. 字符串池是否包含兩個具有相同值的字符串?
- 18. 一個字符串查找是否有另一個字符串
- 19. 從字符串池中分配字符串是否有效?
- 20. C - 檢查字符串是否是另一個字符串的子字符串
- 21. 檢查字符串是否包含字(不是子字符串!)
- 22. 檢查字符串是否有數字
- 23. Linq int字符串
- 24. Linq OrderBy字符串
- 25. 檢查字符串是否相同C++
- 26. 比較字符串是否相等
- 27. 是否有等價於接受非唯一鍵的SortedList(字符串,字符串)
- 28. 就當字符串化JSON字符串
- 29. 在相當長的字符串替換字符串:
- 30. 字符等於字符串
*您有效*問這個今天早些時候(http://stackoverflow.com/questions/934327) - LINQ從那時起 – 2009-06-01 12:51:58
@Marc Gravell感謝並沒有改變。我知道LINQ在最近一小時左右沒有變化,我只是想弄清楚如何進行連接。 – 2009-06-01 13:01:40
@Marc Gravell的答案(http://stackoverflow.com/questions/934327)和@Jon Skeet的答案在下面是正確的。 @bruno conde's和@Scott Ivey的回答是不正確的。因此,您應該將@Jon Skeet的答案標記爲已接受的答案。 – 2010-02-04 17:11:06