[英]Split list values into comma separated strings
我從像下面的數據表列中選擇不同的值。
var uniqueCC = dtNew.AsEnumerable().Select(s => new { cc = s.Field<string>("ID"), }).Distinct().ToList();
var uniqueCode = dtNew.AsEnumerable().Select(s => new { Code = s.Field<string>("EAI"), }).Distinct().ToList();
現在我需要在逗號分隔的字符串中單獨獲取值,並且我使用下面的代碼並且它不單獨使用值。
string strCC = String.Join(",", uniqueCC);
string strEAI = String.Join(",", uniqueCode);
請提供一些建議。
列出值
cc=1, cc=2, cc=3
預期結果
1,2,3
您可以使用LINQ Select()
方法將值單獨傳遞給String.Join()
:
string strCC = String.Join(",", uniqueCC.Select(o => o.cc));
或者只是首先返回字符串值而不是匿名類型:
var uniqueCC = dtNew.AsEnumerable().Select(s => s.Field<string>("ID")).Distinct();
string strCC = String.Join(",", uniqueCC);
您可以使用c#中提供的aggregate
函數。
假設您有一個名為listOfString
的字符串列表,那么您可以像這樣調用聚合函數。
string outString = listOfString.Aggregate((a, b) => a + "," + b);
它會做到這一點。
作為har07優秀答案的擴展,如果這是您經常做的事情,為了節省編寫代碼的負載,您可以將其實現為靜態擴展方法,您可以在其中傳遞數據類型,列名稱和所需的分隔符 - 所以它可以處理不同的列數據類型和分隔符 - 在一個單獨的文件中:
namespace Extensions
{
public static class LinqExtensions
{
public static String ReturnSeparatedString<T>(this DataTable datatable, string field, string separator)
{
var unique =
datatable.AsEnumerable()
.Select(s => new {cc = s.Field<string>(field),}).Distinct();
return String.Join(separator, unique.Select(o => o.cc));
}
}
}
然后通過創建對新Extensions.LinqExtensions類的引用從代碼中調用它,並直接在dataTable上調用它,如下所示:
var commaSeparatedIds = dataTable.ReturnSeparatedString<string>("ID",",");
var commaSeparatedEAIs = dataTable.ReturnSeparatedString<string>("EAI",",");
var commaSeparatedInts = dataTable.ReturnSeparatedString<int>("MYINTS",",");
var dotSeparatedStrings = dataTable.ReturnSeparatedString<int>("OtherId", ".");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.