簡體   English   中英

將列表值拆分為逗號分隔的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM