[英]C# Order/Sorting List by String Name - [n]x[n]
我在 C# 中有一个需要按名称排序的列表。 名称是棚子的大小,所以这样开始:
当我按名称订购它们时,它会选择 10x6 作为第一个,但 4x4 应该是第一个。 我认为 1 正在被取走,并且是以这种方式订购的。
我有这个:
allProducts = allProducts.OrderBy(x => x.Name).ToList();
按名称订购它们的最佳方法是什么 - [n]x[n] 并且最有效?
它不是特别“有效”,因为字符串混搭这种事情并不是,但您可以使用正则表达式根据您的规则提取维度和顺序。 假设您的规则是“按区域排序”,即宽度乘以深度:
var regex = new Regex(@"(?<a>\d+)\s*x\s*(?<b>\d+)");
var input = new List<string>
{
"4x4 Apex Shed",
"20x6 Apex Shed",
"10x6 Apex Shed"
};
var result = input.OrderBy(x => {
var match = regex.Match(x);
var a = int.Parse(match.Groups["a"].Value);
var b = int.Parse(match.Groups["b"].Value);
return a * b;
});
现场示例: https://dotnetfiddle.net/SDDJgy
如果您想有效地将数据存储为具有宽度、深度和名称属性的 object 并适当地排序,而不是尝试从字符串中解析这些值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.