[英]Splitting Comma Separated String in List on certain condition
我有一個數據列表:
Field 1 (String) Field 2 (string)
Pack1 51,52,53,55,56
Pack2 51,53,54,57,59
字段2包含逗號分隔的整數作為字符串。
我也有一些代碼:
public Class Pack
{
public string Field1{get;set;}
public string Field2{get;set;}
}
Ilist<Pack> lstPackIdList =new List<Pack>();
lstPackIdList.Add(new Pack{"Pack1","51,52,53,55,56"});
lstPackIdList.Add(new Pack{"Pack2","51,53,54,57,59"});
我想將其轉換為以下格式:
Field 1 (String) Field 2 (string)
Pack1 51,52,53
Pack1 55,56
Pack2 51
Pack2 53,54
Pack2 57
Pack2 59
拆分字段2的邏輯是:“如果字符串中的相鄰值不是連續數字,則將拆分字符串。”
我如何通過使用其他類型的集合(例如“字典”或“哈希表”而不是“列表”)來更輕松地應用此邏輯。
怎么樣:
IEnumerable<Pack> result = lstPackIdList.Select(p =>
{
int[] values = p.Field2.Split(',').Select(n => Convert.ToInt32(n)).ToArray();
if (values.Length == 0) return Enumerable.Empty<Pack>();
StringBuilder groups = new StringBuilder().Append(values[0]);
for (int i = 1; i < values.Length; i++)
groups.Append(Math.Abs(values[i] - values[i - 1]) == 1 ? "," : "-").Append(values[i]);
return groups.ToString().Split('-').Select(g => new Pack
{
Field1 = p.Field1, Field2 = g
});
}).SelectMany(p => p);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.