繁体   English   中英

C# 按字符串名称排序/排序列表 - [n]x[n]

[英]C# Order/Sorting List by String Name - [n]x[n]

我在 C# 中有一个需要按名称排序的列表。 名称是棚子的大小,所以这样开始:

  • 4x4 顶棚
  • 20x6 顶棚
  • 10x6 顶棚

当我按名称订购它们时,它会选择 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM