Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何基于.net中的另一个数据表删除一个数据表行?_C#_Asp.net_.net_Datatable - Fatal编程技术网

C# 如何基于.net中的另一个数据表删除一个数据表行?

C# 如何基于.net中的另一个数据表删除一个数据表行?,c#,asp.net,.net,datatable,C#,Asp.net,.net,Datatable,我有一个名为dtFirst的数据表,如下所示 Fieldname Newvalue antenastructure 12 slno 2 servicelevel powersupply 另一个数据表为dtMaster Mastertabe Masterfield infoid zvalue qvalue M_seq antenastr

我有一个名为
dtFirst
的数据表,如下所示

Fieldname              Newvalue

antenastructure        12
slno                   2
servicelevel
powersupply
另一个数据表为
dtMaster

Mastertabe          Masterfield          infoid      zvalue     qvalue

M_seq               antenastructure       123          
M_seq               slno                  1      
M_seq               servicelevel          133
M_seq               powersupply           154
M_seq               azimheight            124

我想要的是,如果
dtFirst
Fieldname
不包含
Newvalue
的话,我想从
dtMaster
中删除行。在这里,我想删除包含
servicelevel
powersupply
的行。这两个是大数据表,我在其中发布了一小部分内容,这是伪的在我手机上键入的代码:

var rowsWithoutVals = dtFirst.Rows.Select("newValues = ''");

for(int i = dtMaster.Rows.Count - 1; i > -1;i--) {

 foreach (var emptyItem in rowsWithoutVals) {
  if (emptyItem[0] == dtMaster[i][1]) {
    dtMaster.Rows.RemoveAt[i];
    break;
   }
 }
}
看看这是否有效

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dtFirst = new DataTable();
            dtFirst.Columns.Add("Fieldname", typeof(string));
            dtFirst.Columns.Add("Newvalue", typeof(int));
            dtFirst.Columns["Newvalue"].AllowDBNull = true;

            dtFirst.Rows.Add(new object[] {"antenastructure", 12});
            dtFirst.Rows.Add(new object[] {"slno", 2});
            dtFirst.Rows.Add(new object[] {"servicelevel"});
            dtFirst.Rows.Add(new object[] {"powersupply"});

            string[] dtFirstValidRows = dtFirst.AsEnumerable().Where(x => x.Field<int?>("Newvalue") != null).Select(x => x.Field<string>("Fieldname")).ToArray();

            DataTable dtMaster = new DataTable();
            dtMaster.Columns.Add("Mastertabe", typeof(string));
            dtMaster.Columns.Add("Masterfield", typeof(string));
            dtMaster.Columns.Add("infoid", typeof(int));
            dtMaster.Columns["infoid"].AllowDBNull = true;
            dtMaster.Columns.Add("zvalue", typeof(int));
            dtMaster.Columns["zvalue"].AllowDBNull = true;
            dtMaster.Columns.Add("qvalue", typeof(int));
            dtMaster.Columns["qvalue"].AllowDBNull = true;

            dtMaster.Rows.Add(new object[] {"M_seq", "antenastructure", 123});          
            dtMaster.Rows.Add(new object[] {"M_seq", "slno", 1});          
            dtMaster.Rows.Add(new object[] {"M_seq", "servicelevel", 133});          
            dtMaster.Rows.Add(new object[] {"M_seq", "powersupply", 154});          
            dtMaster.Rows.Add(new object[] {"M_seq", "azimheight", 124});

            dtMaster = dtMaster.AsEnumerable().Where(x => dtFirstValidRows.Contains(x.Field<string>("Masterfield"))).CopyToDataTable();
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用系统数据;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
DataTable dtFirst=新DataTable();
dtFirst.Columns.Add(“Fieldname”,typeof(string));
dtFirst.Columns.Add(“Newvalue”,typeof(int));
dtFirst.Columns[“Newvalue”]。AllowDBNull=true;
Add(新对象[]{“天线结构”,12});
添加(新对象[]{“slno”,2});
添加(新对象[]{“servicelevel”});
添加(新对象[]{“powersupply”});
字符串[]dtFirstValidRows=dtFirst.AsEnumerable()。其中(x=>x.Field(“Newvalue”)!=null)。选择(x=>x.Field(“Fieldname”)).ToArray();
DataTable dtMaster=新DataTable();
Add(“Mastertabe”,typeof(string));
添加(“主字段”,typeof(字符串));
Add(“infoid”,typeof(int));
dtMaster.Columns[“infoid”].AllowDBNull=true;
添加(“zvalue”,typeof(int));
dtMaster.Columns[“zvalue”].AllowDBNull=true;
添加(“qvalue”,typeof(int));
dtMaster.Columns[“qvalue”]。AllowDBNull=true;
添加(新对象[]{“M_seq”,“antenastructure”,123});
添加(新对象[]{“M_seq”,“slno”,1});
添加(新对象[]{“M_seq”,“servicelevel”,133});
添加(新对象[]{“M_seq”,“powersupply”,154});
添加(新对象[]{“M_seq”,“azimheight”,124});
dtMaster=dtMaster.AsEnumerable()。其中(x=>dtFirstValidRows.Contains(x.Field(“Masterfield”)).CopyToDataTable();
}
}
}

C'mon,这很简单-你应该能够自己编写代码-向我们展示你迄今为止的努力?只需执行一个行。选择on dtFirst以获取不带新值的项目,然后在dtMaster上迭代,删除dtFirst中不带值的行。我使用了链接中提到的逻辑,但没有一个成功