谢谢。。各位大神。这种如何在内存中匹配

nitaiyoucala 2021-05-19 01:12:57
第一个txt数据
campaignId campaignName
1 湖北
2 江苏

第二个txt数据
adgroupId adgroupName
1 仙桃
2 武汉
3 苏州

第三个txt数据
campaignId adgroupId keyword
1 1 湖北哈哈哈
1 2 湖北xxxx
2 3 苏州2222


需求:不想导入sql中,想通过程序在内存中匹配 得到如下数据,代码怎么实现?
campaignId adgroupId keyword
湖北 仙桃 湖北哈哈哈
湖北 武汉 湖北xxxx
江苏 苏州 我是江苏的苏州2222
...全文
22448 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
低丶调 2021-07-06
  • 打赏
  • 举报
回复

最后你是怎么写的?
直接建一个类(省id,省名称,市id,市名称),然后把前两个的数据都放到这个list里,最后用FirstOrDefault根据id取到model,model里面就包含省和市的名称,这样就完事了吧

这个list搞完后大概是这些数据
省id 省名称 市id 市名称
1 湖北 1 仙桃
1 湖北 2 武汉

然后循环里面
var model = 上面搞好的list.FirstOrDefault(a=>a.省id==省id && a.市id==市id);
然后从model里面去省名称和市名称

这个地方应该也可以直接用left join之类的来代替自己遍历,具体的话,就得边写边调试一下了

luj_1768 2021-05-24
  • 打赏
  • 举报
回复
现在挖矿最热,难度越来越大。不过,推荐的方法是:写好业务规则,然后用训练解决。
远方Alan 2021-05-22
  • 打赏
  • 举报
回复
找到hashtable
yiyioo 2021-05-21
  • 打赏
  • 举报
回复
广告行业的码农啊。哈哈哈哈哈。
Null_Reference 2021-05-19
  • 打赏
  • 举报
回复
引用 9 楼 Null_Reference 的回复:
[quote=引用 6 楼 nitaiyoucala 的回复:][quote=引用 5 楼 Null_Reference 的回复:]

var txt1 = System.IO.File.ReadAllLines(@"C:\Users\Yong\Desktop\1.txt");
            var txt2 = System.IO.File.ReadAllLines(@"C:\Users\Yong\Desktop\2.txt");
            var txt3 = System.IO.File.ReadAllLines(@"C:\Users\Yong\Desktop\3.txt");

            System.Data.DataTable dt = new System.Data.DataTable();
            dt.Columns.Add("campaignId");
            dt.Columns.Add("campaignName");
            foreach (var item in txt1)
            {
                if (item != txt1.First())
                {
                    var tarr = item.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    dt.Rows.Add(tarr);
                }
            }
            System.Data.DataTable dt1 = new System.Data.DataTable();
            dt1.Columns.Add("adgroupId");
            dt1.Columns.Add("adgroupName");
            foreach (var item in txt2)
            {
                if (item != txt2.First())
                {
                    var tarr = item.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    dt1.Rows.Add(tarr);
                }
            }
            System.Data.DataTable dt2 = new System.Data.DataTable();
            dt2.Columns.Add("campaignId");
            dt2.Columns.Add("adgroupId");
            dt2.Columns.Add("keyword");
            foreach (var item in txt3)
            {
                if (item != txt3.First())
                {
                    var tarr = item.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    dt2.Rows.Add(tarr);
                }
            }

            var t1 = dt.AsEnumerable();
            var t2 = dt1.AsEnumerable();
            var t3 = dt2.AsEnumerable();

            var query1 =
                  from l1 in t1
                  from l2 in t2
                  from l3 in t3
                  where l1.Field<String>("campaignId") == l3.Field<String>("campaignId") && l2.Field<String>("adgroupId") == l3.Field<String>("adgroupId")
                  select new
                  {
                      adgroupName = l2.Field<String>("adgroupName"),
                      campaignName = l1.Field<String>("campaignName"),
                      keyword = l3.Field<String>("keyword"),

                  };

            DataTable dtNew = new DataTable();
            dtNew.Columns.Add("adgroupName");
            dtNew.Columns.Add("campaignName");
            dtNew.Columns.Add("keyword");
            foreach (var obj in query1)
            {
                dtNew.Rows.Add(obj.adgroupName, obj.campaignName, obj.keyword);
            }
这是啥问题? 谢谢 [/quote] 你不是用的NET或C#迈?为啥你的不等于符号和我们的不一样?[/quote] 命名空间引用了吗 using System;
Null_Reference 2021-05-19
  • 打赏
  • 举报
回复
引用 6 楼 nitaiyoucala 的回复:
[quote=引用 5 楼 Null_Reference 的回复:]

var txt1 = System.IO.File.ReadAllLines(@"C:\Users\Yong\Desktop\1.txt");
            var txt2 = System.IO.File.ReadAllLines(@"C:\Users\Yong\Desktop\2.txt");
            var txt3 = System.IO.File.ReadAllLines(@"C:\Users\Yong\Desktop\3.txt");

            System.Data.DataTable dt = new System.Data.DataTable();
            dt.Columns.Add("campaignId");
            dt.Columns.Add("campaignName");
            foreach (var item in txt1)
            {
                if (item != txt1.First())
                {
                    var tarr = item.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    dt.Rows.Add(tarr);
                }
            }
            System.Data.DataTable dt1 = new System.Data.DataTable();
            dt1.Columns.Add("adgroupId");
            dt1.Columns.Add("adgroupName");
            foreach (var item in txt2)
            {
                if (item != txt2.First())
                {
                    var tarr = item.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    dt1.Rows.Add(tarr);
                }
            }
            System.Data.DataTable dt2 = new System.Data.DataTable();
            dt2.Columns.Add("campaignId");
            dt2.Columns.Add("adgroupId");
            dt2.Columns.Add("keyword");
            foreach (var item in txt3)
            {
                if (item != txt3.First())
                {
                    var tarr = item.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    dt2.Rows.Add(tarr);
                }
            }

            var t1 = dt.AsEnumerable();
            var t2 = dt1.AsEnumerable();
            var t3 = dt2.AsEnumerable();

            var query1 =
                  from l1 in t1
                  from l2 in t2
                  from l3 in t3
                  where l1.Field<String>("campaignId") == l3.Field<String>("campaignId") && l2.Field<String>("adgroupId") == l3.Field<String>("adgroupId")
                  select new
                  {
                      adgroupName = l2.Field<String>("adgroupName"),
                      campaignName = l1.Field<String>("campaignName"),
                      keyword = l3.Field<String>("keyword"),

                  };

            DataTable dtNew = new DataTable();
            dtNew.Columns.Add("adgroupName");
            dtNew.Columns.Add("campaignName");
            dtNew.Columns.Add("keyword");
            foreach (var obj in query1)
            {
                dtNew.Rows.Add(obj.adgroupName, obj.campaignName, obj.keyword);
            }
这是啥问题? 谢谢 [/quote] 你不是用的NET或C#迈?为啥你的不等于符号和我们的不一样?
  • 打赏
  • 举报
回复
string txt1 = System.IO.File.ReadAllText("1.txt"); string txt2 = System.IO.File.ReadAllText("2.txt"); string txt3 = System.IO.File.ReadAllText("3.txt"); var txtarry3 = txt3.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); List<string> newStr = new List<string>() { string.Join(" ",txtarry3[0].Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries)) }; for (int i = 1; i < txtarry3.Count; i++) { var item = txtarry3[i].Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); string s= txt1.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).Where(p => p.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)[0] == item[0]).FirstOrDefault()?.Split(new string[] {" " },StringSplitOptions.RemoveEmptyEntries)?[1]??""; string ss = txt2.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).Where(p => p.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)[0] == item[1]).FirstOrDefault()?.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)?[1]??""; newStr.Add(s+" "+ss+" "+item[2]); } string val = string.Join("\r\n", newStr); System.IO.File.WriteAllText("4.txt",val);
三楼の郎 2021-05-19
  • 打赏
  • 举报
回复
hashtable,前两个读到hashtable里面,第三个根据key从hashtable里面取值替换就是了
nitaiyoucala 2021-05-19
  • 打赏
  • 举报
回复
引用 5 楼 Null_Reference 的回复:

var txt1 = System.IO.File.ReadAllLines(@"C:\Users\Yong\Desktop\1.txt");
            var txt2 = System.IO.File.ReadAllLines(@"C:\Users\Yong\Desktop\2.txt");
            var txt3 = System.IO.File.ReadAllLines(@"C:\Users\Yong\Desktop\3.txt");

            System.Data.DataTable dt = new System.Data.DataTable();
            dt.Columns.Add("campaignId");
            dt.Columns.Add("campaignName");
            foreach (var item in txt1)
            {
                if (item != txt1.First())
                {
                    var tarr = item.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    dt.Rows.Add(tarr);
                }
            }
            System.Data.DataTable dt1 = new System.Data.DataTable();
            dt1.Columns.Add("adgroupId");
            dt1.Columns.Add("adgroupName");
            foreach (var item in txt2)
            {
                if (item != txt2.First())
                {
                    var tarr = item.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    dt1.Rows.Add(tarr);
                }
            }
            System.Data.DataTable dt2 = new System.Data.DataTable();
            dt2.Columns.Add("campaignId");
            dt2.Columns.Add("adgroupId");
            dt2.Columns.Add("keyword");
            foreach (var item in txt3)
            {
                if (item != txt3.First())
                {
                    var tarr = item.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    dt2.Rows.Add(tarr);
                }
            }

            var t1 = dt.AsEnumerable();
            var t2 = dt1.AsEnumerable();
            var t3 = dt2.AsEnumerable();

            var query1 =
                  from l1 in t1
                  from l2 in t2
                  from l3 in t3
                  where l1.Field<String>("campaignId") == l3.Field<String>("campaignId") && l2.Field<String>("adgroupId") == l3.Field<String>("adgroupId")
                  select new
                  {
                      adgroupName = l2.Field<String>("adgroupName"),
                      campaignName = l1.Field<String>("campaignName"),
                      keyword = l3.Field<String>("keyword"),

                  };

            DataTable dtNew = new DataTable();
            dtNew.Columns.Add("adgroupName");
            dtNew.Columns.Add("campaignName");
            dtNew.Columns.Add("keyword");
            foreach (var obj in query1)
            {
                dtNew.Rows.Add(obj.adgroupName, obj.campaignName, obj.keyword);
            }
这是啥问题? 谢谢
Null_Reference 2021-05-19
  • 打赏
  • 举报
回复

var txt1 = System.IO.File.ReadAllLines(@"C:\Users\Yong\Desktop\1.txt");
            var txt2 = System.IO.File.ReadAllLines(@"C:\Users\Yong\Desktop\2.txt");
            var txt3 = System.IO.File.ReadAllLines(@"C:\Users\Yong\Desktop\3.txt");

            System.Data.DataTable dt = new System.Data.DataTable();
            dt.Columns.Add("campaignId");
            dt.Columns.Add("campaignName");
            foreach (var item in txt1)
            {
                if (item != txt1.First())
                {
                    var tarr = item.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    dt.Rows.Add(tarr);
                }
            }
            System.Data.DataTable dt1 = new System.Data.DataTable();
            dt1.Columns.Add("adgroupId");
            dt1.Columns.Add("adgroupName");
            foreach (var item in txt2)
            {
                if (item != txt2.First())
                {
                    var tarr = item.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    dt1.Rows.Add(tarr);
                }
            }
            System.Data.DataTable dt2 = new System.Data.DataTable();
            dt2.Columns.Add("campaignId");
            dt2.Columns.Add("adgroupId");
            dt2.Columns.Add("keyword");
            foreach (var item in txt3)
            {
                if (item != txt3.First())
                {
                    var tarr = item.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    dt2.Rows.Add(tarr);
                }
            }

            var t1 = dt.AsEnumerable();
            var t2 = dt1.AsEnumerable();
            var t3 = dt2.AsEnumerable();

            var query1 =
                  from l1 in t1
                  from l2 in t2
                  from l3 in t3
                  where l1.Field<String>("campaignId") == l3.Field<String>("campaignId") && l2.Field<String>("adgroupId") == l3.Field<String>("adgroupId")
                  select new
                  {
                      adgroupName = l2.Field<String>("adgroupName"),
                      campaignName = l1.Field<String>("campaignName"),
                      keyword = l3.Field<String>("keyword"),

                  };

            DataTable dtNew = new DataTable();
            dtNew.Columns.Add("adgroupName");
            dtNew.Columns.Add("campaignName");
            dtNew.Columns.Add("keyword");
            foreach (var obj in query1)
            {
                dtNew.Rows.Add(obj.adgroupName, obj.campaignName, obj.keyword);
            }
wanghui0380 2021-05-19
  • 打赏
  • 举报
回复
俗称csv文件 当然对于我个人来说,我也不想介绍啥ado.net 读取csv到datatable,也不想介绍啥linq2csv 对于neter来说,其实是时候看看其他人到底在干啥了,首先我们说csv文件这玩意,目前在工作做使用的最多的是2类人 1.python的人,他们的给模型的训练前的预处理过程,大部分和csv文件有关 2.ETL行业的人,他们可能会从Hadoop上拉取分布的各种文本,然后进行mapreduce聚合数据 我们来看看python的人怎么玩 https://blog.csdn.net/yxdd1gbk/article/details/88667566 对他们用pandas ok,我们去nuget看看,或者直接搜索“C# 类似pandas的库” 我们至少可以看到3个被老外了大规模使用的库 1.微软自己的Microsoft.Data.Analysis https://devblogs.microsoft.com/dotnet/an-introduction-to-dataframe/ 2.Deedle http://bluemountaincapital.github.io/Deedle/index.html 3.Pandas.NET https://github.com/SciSharp/Pandas.NET
nitaiyoucala 2021-05-19
  • 打赏
  • 举报
回复
引用 2 楼 死亡中的独行者 的回复:
string txt1 = System.IO.File.ReadAllText("1.txt"); string txt2 = System.IO.File.ReadAllText("2.txt"); string txt3 = System.IO.File.ReadAllText("3.txt"); var txtarry3 = txt3.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); List<string> newStr = new List<string>() { string.Join(" ",txtarry3[0].Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries)) }; for (int i = 1; i < txtarry3.Count; i++) { var item = txtarry3[i].Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); string s= txt1.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).Where(p => p.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)[0] == item[0]).FirstOrDefault().Split(new string[] {" " },StringSplitOptions.RemoveEmptyEntries)[1]; string ss = txt2.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).Where(p => p.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)[0] == item[1]).FirstOrDefault().Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)[1]; newStr.Add(s+" "+ss+" "+item[2]); } string val = string.Join("\r\n", newStr); System.IO.File.WriteAllText("4.txt",val);
报错了
  • 打赏
  • 举报
回复
string txt1 = System.IO.File.ReadAllText("1.txt"); string txt2 = System.IO.File.ReadAllText("2.txt"); string txt3 = System.IO.File.ReadAllText("3.txt"); var txtarry3 = txt3.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); List<string> newStr = new List<string>() { string.Join(" ",txtarry3[0].Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries)) }; for (int i = 1; i < txtarry3.Count; i++) { var item = txtarry3[i].Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); string s= txt1.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).Where(p => p.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)[0] == item[0]).FirstOrDefault().Split(new string[] {" " },StringSplitOptions.RemoveEmptyEntries)[1]; string ss = txt2.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).Where(p => p.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)[0] == item[1]).FirstOrDefault().Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)[1]; newStr.Add(s+" "+ss+" "+item[2]); } string val = string.Join("\r\n", newStr); System.IO.File.WriteAllText("4.txt",val);
nitaiyoucala 2021-05-19
  • 打赏
  • 举报
回复
求助求助。。。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧