开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 258|回复: 5
收起左侧

[C#] 大佬们我想实现用书号和定价匹配书号目

[复制链接]
结帖率:73% (8/11)
发表于 2024-9-1 14:50:37 | 显示全部楼层 |阅读模式   河北省廊坊市
14精币
大佬们我想实现用书号书名去匹配书号,但是目前匹配率太低l了,2000条才匹配700多条有大佬可以帮忙优化一下吗
[C#] 纯文本查看 复制代码
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using MiniExcelLibs;

public class Program
{
    // 存储处理结果的列表
    public static List<myclass> ceshi = new List<myclass>();

    // 程序的入口点
    public static void Main()
    {
        // Excel 文件路径(需要替换为实际路径)
        string filePath = "C:\\Users\\Administrator\\Desktop\\大书目.xlsx";
        string myfilePath = "C:\\Users\\Administrator\\Desktop\\测试.xlsx";

        // 搜索关键字和目标价格
        string searchTerm = "中华国学经典必读书系:西游记"; // 替换为你的搜索关键字
        double targetPrice = 35.00;  // 目标价格

        // 打印搜索关键字
        Console.WriteLine(searchTerm);

       
       
        try
        {
            // 从 Excel 文件中读取数据并转换为 IEnumerable<Books>
            var rows = MiniExcel.Query<Books>(filePath)?.ToList();
            var testrows = MiniExcel.Query<TestBooks>(myfilePath)?.ToList();

            if (rows == null || testrows == null)
            {
                Console.WriteLine("无法读取数据,确保文件路径和格式正确。");
                return;
            }

            // 存储结果的列表
            var results = new ConcurrentBag<myclass>();

            // 使用 Parallel.ForEach 进行多线程cha询
            Parallel.ForEach(testrows, item =>
            {
                if (item.Title == null || item.Price == null)
                {
                    Console.WriteLine("测试数据中发现无效项。");
                    return;
                }
                


                var book = rows
                    .Where(b => b.Title != null
                                && b.Title.Contains(RemoveBrackets(item.Title))
                                && b.Price.HasValue
                                && b.Price == item.Price)
                    .FirstOrDefault();
                
                Console.WriteLine($"改变前: {item.Title}“改变后”;{RemoveBrackets(item.Title)}");

                if (book != null)
                {
                    Console.WriteLine($"找到书籍: {book.Title}, 定价: {book.Price}. “书号”;{book.Barcode}");

                    results.Add(new myclass
                    {
                        oldTitle = item.Title,
                        oldPrice = item.Price,
                        newTitle = book.Title,
                        newPrice = book.Price,
                        Barcode = book.Barcode
                    });
                }
                else
                {
                    Console.WriteLine("没有找到符合条件的书籍。");

                    results.Add(new myclass
                    {
                        oldTitle = item.Title,
                        oldPrice = item.Price,
                        newTitle = "0",
                        newPrice = 0.0,
                        Barcode = "0"
                    });
                }
            });

            // 将结果保存到新的 Excel 文件中
            MiniExcel.SaveAs("cesh241i.xlsx", results);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"解析失败: {ex.Message}");
        }
    }

    public static string RemoveBrackets(string input)
    {
        // 使用正则表达式去除括号及其内容
        string resultsss = Regex.Replace(input, @"\(.*?\)", "");
        return resultsss;
    }


    // 定义 Books 类,表示从 Excel 文件中读取的书籍数据
    public class Books
    {
        public string? Barcode { get; set; }         // 条码
        public string? Title { get; set; }           // 书名
        public double? Price { get; set; }           // 定价
        public float? Discount { get; set; }         // 折扣
        public string? Stock { get; set; }           // 库存
        public string? Author { get; set; }          // 作者
        public string? Publisher { get; set; }       // 出版社
        public string? PublicationDate { get; set; } // 出版时间
        public string? PrintingDate { get; set; }    // 印刷时间
        public string? Reader { get; set; }          // 读者对象
        public string? Classification { get; set; }  // 中图分类
        public string? Stamp { get; set; }           // 印章
        public string? Format { get; set; }          // 开本
        public string? Supplier { get; set; }        // 供货商
    }

    // 定义 TestBooks 类,表示测试数据中的书籍数据
    public class TestBooks
    {
        public string? Title { get; set; }           // 书名
        public double? Price { get; set; }           // 定价
    }

    // 定义 myclass 类,表示最终处理结果的数据结构
    public class myclass
    {
        public string? oldTitle { get; set; }        // 旧书名
        public double? oldPrice { get; set; }        // 旧定价
        public string? newTitle { get; set; }        // 新书名
        public double? newPrice { get; set; }        // 新定价
        public string? Barcode { get; set; }         // 条码
    }
}


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
头像被屏蔽
结帖率:73% (8/11)

签到天数: 1 天

 楼主| 发表于 2024-9-1 14:51:07 | 显示全部楼层   河北省廊坊市
提示: 该帖被管理员或版主屏蔽
回复

使用道具 举报

签到天数: 1 天

发表于 2024-9-1 14:52:07 | 显示全部楼层   广东省汕尾市
66666666666666666666
回复

使用道具 举报

结帖率:73% (8/11)

签到天数: 1 天

 楼主| 发表于 2024-9-1 14:55:05 | 显示全部楼层   河北省廊坊市
qiuqiu了来个人帮我优化一下
回复

使用道具 举报

结帖率:89% (8/9)

签到天数: 17 天

发表于 2024-9-1 19:41:22 | 显示全部楼层   广东省东莞市
你是在求助,你不把所有东西(项目以及读取的文件)发上来,还要别人主动加你么。
回复

使用道具 举报

结帖率:73% (8/11)

签到天数: 1 天

 楼主| 发表于 2024-9-3 10:47:23 | 显示全部楼层   河北省廊坊市
初夏喔 发表于 2024-9-1 19:41
你是在求助,你不把所有东西(项目以及读取的文件)发上来,还要别人主动加你么。 ...

数据量太大l上传不上去
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表