【发布时间】:2018-08-14 20:36:34
【问题描述】:
我有一个 SKU(产品编号)列表,需要根据非常具体的标准对其进行排序。
SKU 列表,例如:
List<string> skuList = new List<string>()
{
"SKU001040AA",
"SKU003010DED",
"SKU002010VEVW",
"SKU003040EEGE",
"SKU001020GEF"
};
每个 SKU 的结构如下:
- 前三个字符是填充符
- 第 4-6 个字符是指 SKU 所属的组
- 第 7-9 个字符是指 SKU 在其各自组中的优先级
- 剩下的第 10 个等字符是填充符
因此,列表中的第一个 SKU 属于组 001,优先级为 040。数值越小优先级越高。在这种情况下,030 的优先级高于 040。我的目标是过滤列表,以便仅保留各自组中优先级最高的 SKU。使用上述列表作为参考,过滤后的列表将包含“SKU003010DED”、“SKU002010VEVW”和“SKU001020GEF”。过滤后的列表不需要排序。它最终会被打包成一个 JSON 对象并被发送出去。
我尝试了几种不同的方法,其中几种似乎效率很低。我突然想到,我可以使用 SKU 的当前格式轻松订购列表。之后,我认为可以使用 Contains() 方法检查子字符串是否存在,但自然只适用于列表中的完整字符串...
skuList = skuList.OrderBy(x => x).ToList();
List<string> skuListFiltered = new List<string>();
foreach (var sku in skuList)
{
//Unsure of the best approach to view substrings of skuList
if (!skuList.Contains(sku.Substring(3,3)))
{
skuListFiltered.Add(sku);
}
}
有没有办法以这种方式过滤这个列表,或者我应该尝试一种完全不同的方法?
【问题讨论】:
标签: c# string list linq filtering