111,125
社区成员
发帖
与我相关
我的任务
分享

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace C_解答专用窗体
{
public partial class Form1 : Form//, INotifyPropertyChanged
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
DataTable aa = new DataTable(), bb = new DataTable();
foreach (string ss in "内码 简拼 品名 成份名 药品类别 规格 配伍禁忌".Split(' '))
aa.Columns.Add(ss);
var ff = "47019 RS 人参 人参 人参 支 藜芦;1111 LL 藜芦 藜芦 藜芦 g 人参,党参,玄参,西洋参,细辛;33212 XX 细辛 细辛 细辛 g 藜芦;2222 RS 蚺蛇 蚺蛇 蚺蛇 g 全蝎"
.Split(';').Select(dd => dd.Split(' ')).ToArray();
ff.Select(dd => aa.Rows.Add(dd)).ToArray();
foreach (string ss in "内码 简拼".Split(' '))
bb.Columns.Add(ss);
var ff1 = "47019 yy;1111 er;aaa sv;aas mj;ccc RS;aas dg;vvv nhgn;aas hj;iu RS;aas fgjk;456 RS;aas kfg;erte fd;gfdgdfg sdfg"
.Split(';').Select(dd => dd.Split(' ')).ToArray();
ff1.Select(dd => bb.Rows.Add(dd)).ToArray();
foreach (DataRow dd in bb.Rows)
{
var ee = aa.Rows.Cast<DataRow>().FirstOrDefault(hh => hh.ItemArray[0].ToString() == dd.ItemArray[0].ToString());
if (ee != null) aa.Rows.Remove(ee);
}
//DataRow[] ww = { };
//foreach (DataRow dd in bb.Rows)
// ww = ww.Concat(aa.Rows.Cast<DataRow>().Where(hh => hh.ItemArray[0].ToString() == dd.ItemArray[0].ToString())).ToArray();
//foreach (DataRow rr in ww) aa.Rows.Remove(rr);
}
//**************************************************
}
}



//DataRow[] ww = { };
//foreach (DataRow dd in bb.Rows)
// ww = ww.Concat(aa.Rows.Cast<DataRow>().Where(hh => hh.ItemArray[0].ToString() == dd.ItemArray[0].ToString())).ToArray();
//foreach (DataRow rr in ww) aa.Rows.Remove(rr);
protected void removeItem(DataTable dt1,DataTable dt2)
{
for (int i = 0; i < dt1.Rows.Count; i++)
{
for (int j = 0; j < dt2.Rows.Count; j++)
{
if (dt2.Rows[j][0].ToString() == dt1.Rows[i][0].ToString())
{
dt1.Rows.RemoveAt(i);
break;
}
}
}
}
重复调用该方法100万次,耗时2秒多
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
for (int n = 0; n < 1000000; n++)
{
removeItem(dt1, dt2);
}
sw.Stop();
Response.Write(sw.ElapsedMilliseconds.ToString() + "<br />");

内码 简拼 品名 成份名 药品类别 规格 配伍禁忌
33212 XX 细辛 细辛 细辛 g 藜芦
2222 RS 蚺蛇 蚺蛇 蚺蛇 g 全蝎
DataTable aa = new DataTable(), bb = new DataTable();
foreach (string ss in "内码 简拼 品名 成份名 药品类别 规格 配伍禁忌".Split(' '))
aa.Columns.Add(ss);
var ff = "47019 RS 人参 人参 人参 支 藜芦;1111 LL 藜芦 藜芦 藜芦 g 人参,党参,玄参,西洋参,细辛;33212 XX 细辛 细辛 细辛 g 藜芦;2222 RS 蚺蛇 蚺蛇 蚺蛇 g 全蝎"
.Split(';').Select(dd => dd.Split(' ')).ToArray();
ff.Select(dd => aa.Rows.Add(dd)).ToArray();
foreach (string ss in "内码 简拼".Split(' '))
bb.Columns.Add(ss);
var ff1 = "47019 yy;1111 er;aaa sv;aas mj;ccc RS;aas dg;vvv nhgn;aas hj;iu RS;aas fgjk;456 RS;aas kfg;erte fd;gfdgdfg sdfg;"
.Split(';').Select(dd => dd.Split(' ')).ToArray();
ff1.Select(dd => bb.Rows.Add(dd)).ToArray();
foreach (DataRow dd in bb.Rows) aa.Rows.Remove(aa.Rows.Cast<DataRow>().First(hh => hh.ItemArray[0] == dd.ItemArray[0]));
void 请问如何查找多个符合条件的值()
{
DataTable aa = new DataTable(), bb = new DataTable();
foreach (string ss in "内码 简拼 品名 成份名 药品类别 规格 配伍禁忌".Split(' '))
aa.Columns.Add(ss);
var ff = "47019 RS 人参 人参 人参 支 藜芦;1111 LL 藜芦 藜芦 藜芦 g 人参,党参,玄参,西洋参,细辛;33212 XX 细辛 细辛 细辛 g 藜芦;2222 RS 蚺蛇 蚺蛇 蚺蛇 g 全蝎"
.Split(';').Select(dd => dd.Split(' ')).ToArray();
ff.Select(dd => aa.Rows.Add(dd)).ToArray();
bb = aa.Copy(/*求一个高效对比算法,比较两个DataTable差异数据https://bbs.csdn.net/topics/392562169*/);
bb.Rows.RemoveAt(0); bb.Rows.RemoveAt(0);
bb.Columns.RemoveAt(bb.Columns.Count - 1); bb.Columns.RemoveAt(bb.Columns.Count - 1);
foreach (DataRow dd in bb.Rows) aa.Rows.Remove(aa.Rows.Cast<DataRow>().First(hh => hh.ItemArray[0] == dd.ItemArray[0]));
}