按第一个字符(字母和数字)对字符串进行分组

发布于 2024-12-05 18:19:23 字数 251 浏览 1 评论 0原文

我有一个字符串(产品名称)列表,我需要从中创建“0-9”、“A”、“B”等形式的产品索引(基于产品名称的第一个字符)。 “Z”。

我正在这样做:

Products.GroupBy(p => p.Name[0].ToUpper())

但这不适用于以“0”..“9”开头的产品名称。

如何修改查询以将所有字母分组到不同的组(“A”..“Z”),以及将所有数字分组到单个组(“0-9”)?

I have a list of strings (product names) from which I need to create a product index (based on first-char of the product name) of the form "0-9", "A", "B", ... "Z".

I am doing this:

Products.GroupBy(p => p.Name[0].ToUpper())

But that doesn't work for the product names which start with "0".."9".

How do I modify the query to group all alphas into different groups ("A".."Z"), as well as all numerics into a single group ("0-9")?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

强辩 2024-12-12 18:19:23

您还没有说您是使用 LINQ to SQL 还是 LINQ to Objects 或其他东西。在 LINQ to Objects 中,我可能会使用:(

Products.GroupBy(p = {
    char c = p.Name[0];
    return c >= '0' && c <= '9' ? '0' : char.ToUpper(c);
});

顺便说一句,请注意,ToUpper 是文化敏感的 - 不清楚这是否是您想要的。)

在 LINQ to SQL 中(其中块 lambda无法使用,因为它们无法转换为表达式树)我可能会使用 let 子句以不同的方式执行相同的操作:

var query = from product in products
            let c = product.Name[0]
            group product by c >= '0' && c <= '9' ? '0' : char.ToUpper(c);

You haven't said whether you're using LINQ to SQL or LINQ to Objects or something else. In LINQ to Objects I'd probably use:

Products.GroupBy(p = {
    char c = p.Name[0];
    return c >= '0' && c <= '9' ? '0' : char.ToUpper(c);
});

(Note that ToUpper is culture-sensitive, by the way - it's not clear whether that's what you want or not.)

In LINQ to SQL (where block lambdas can't be used, as they can't be converted to expression trees) I'd probably use a let clause to do the same sort of thing in a different way:

var query = from product in products
            let c = product.Name[0]
            group product by c >= '0' && c <= '9' ? '0' : char.ToUpper(c);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文