问题描述
我想问下如果btsList集合里面的项如果有等于str这个字符串的,就添加到我定义的datatable.fr3_table.Rows.Add(btsList)这个行不通,应该怎么写?我设断点调试的时候,btslist集合的值都是对的。就是不知道怎么赋值到我Datatableforeach(MatchminmcTwo){MatchCollectionmcSn=reg.Matches(m.ToString());stringstr=Regex.Replace(mcSn[0].Value,"/","").Replace(".","");varbtsList=BTS_tb.AsEnumerable().Select(p=>p["SN"].ToString()).ToList();MatchCollectionmcRF=RF_reg.Matches(m.ToString());if(btsList.Contains(str)){object[]values=newobject[]{m.ToString(),str,Regex.Replace(mcRF[0].Value,"","").Replace(".","")};td.Rows.Add(values);}else{fr3_table.Rows.Add(btsList);//此处存在问题}}this.dataGridView2.DataSource=td.DefaultView;
解决方案
本帖最后由 starfd 于 2015-09-08 11:03:28 编辑
解决方案二:
new个row给row赋值将rowadd到table
解决方案三:
DataRowr=table.NewRow();table["列名"]=列值;table.Rows.Add(r);
解决方案四:
btsList你要能跟row的每列对应上才行啊,如果你不传数组,它就认为你只传了一个参数,如果你的btsList跟DataTable一行的列能完全对应,那么你可以fr3_table.Rows.Add(btsList.ToArray());
解决方案五:
引用2楼wc_ling的回复:
DataRowr=table.NewRow();table["列名"]=列值;table.Rows.Add(r);
if(td["SN"]=btsList)这样?
解决方案六:
引用3楼starfd的回复:
btsList你要能跟row的每列对应上才行啊,如果你不传数组,它就认为你只传了一个参数,如果你的btsList跟DataTable一行的列能完全对应,那么你可以fr3_table.Rows.Add(btsList.ToArray());
btsList是另外一个table1的集合。str是table2其中一列的集合。对比之后是传值到第form3的table去的。加了这个ToArray());报错了,Inputarrayislongerthanthenumberofcolumnsinthistable.大于表的列数了
解决方案七:
引用3楼starfd的回复:
btsList你要能跟row的每列对应上才行啊,如果你不传数组,它就认为你只传了一个参数,如果你的btsList跟DataTable一行的列能完全对应,那么你可以fr3_table.Rows.Add(btsList.ToArray());
fr3_table.Rows.Add(btsList),我这个talbe也只有1列啊。怎么会大于btslist呢,这个是集合取得table也是只有一列而已
解决方案八:
引用2楼wc_ling的回复:
DataRowr=table.NewRow();table["列名"]=列值;table.Rows.Add(r);
你把要赋值给Table的值从list里取出来给它不就行了
解决方案九:
你是一列,但你是多行数据,如果你btsList内每条记录对应一行fr3_table.Rows,那你应该循环遍历btsList,然后执行Add方法
解决方案十:
btsList是否仅一列,你自己知道,如果不是一列,在下面重新组织一下newobject[]btsList.ForEach(p=>fr3_table.Rows.Add(newobject[]{p}));
解决方案十一:
引用9楼ajianchina的回复:
btsList是否仅一列,你自己知道,如果不是一列,在下面重新组织一下newobject[]btsList.ForEach(p=>fr3_table.Rows.Add(newobject[]{p}));
你好,这个会add很多重复几次数据,本来只有10条的。但是fr3_table.Rows.Add了几十条,等于str字符串的数据也add了
解决方案十二:
引用8楼starfd的回复:
你是一列,但你是多行数据,如果你btsList内每条记录对应一行fr3_table.Rows,那你应该循环遍历btsList,然后执行Add方法
if(btsList.Contains(str))我认为这样做一次判断就行了,如果再循环程序会变得很慢,虽然这只是个小程序。谢谢你提供的思路,如果实在不行就循环再检查一次了
解决方案十三:
你根本没懂我的意思……是这个意思else{//fr3_table.Rows.Add(btsList);//此处存在问题for(){//Add}}
解决方案十四:
引用12楼starfd的回复:
你根本没懂我的意思……是这个意思else{//fr3_table.Rows.Add(btsList);//此处存在问题for(){//Add}}
for循环btsList,如果等于str就addbtslist[i]对吗?
解决方案十五:
你这需求从逻辑上就讲不通List里存的是一列的值,里面是多行的而DataTable里是个表,多行多列你想把某行某列的内容添加进这个表里,怎么个添加法?
解决方案:
你只应该把某个表里的一行数据,添加到另一个表里的某一行(或者说新增行)而不是把某个表里某行某列的其中一个数据添加到一行里
解决方案:
引用14楼Z65443344的回复:
你这需求从逻辑上就讲不通List里存的是一列的值,里面是多行的而DataTable里是个表,多行多列你想把某行某列的内容添加进这个表里,怎么个添加法?
我想把table1的515488500100加到表3里面去。就是这样了table1(1)table2IDIDName515488515488KC500100500100CKK501200OPOP
解决方案:
这么简单的问题我不知道你在纠结什么兄弟如果table1与你的目标table格式相同,你就直接给他赋值呗如果格式不同,你就把你要数据从table1取出来赋单独赋给你的目标table至于有个list什么的,不就是赋值过过程中的中间量嘛没了手推车,你还不会从超市把买好东西拿回家了吗?
解决方案:
引用10楼qq_27779607的回复:
Quote: 引用9楼ajianchina的回复:
btsList是否仅一列,你自己知道,如果不是一列,在下面重新组织一下newobject[]btsList.ForEach(p=>fr3_table.Rows.Add(newobject[]{p}));你好,这个会add很多重复几次数据,本来只有10条的。但是fr3_table.Rows.Add了几十条,等于str字符串的数据也add了
你是这个意思吧?varbtsList=BTS_tb.AsEnumerable().Select(p=>p["SN"].ToString()).ToList();foreach(MatchminmcTwo){MatchCollectionmcSn=reg.Matches(m.ToString());stringstr=Regex.Replace(mcSn[0].Value,"/","").Replace(".","");MatchCollectionmcRF=RF_reg.Matches(m.ToString());if(btsList.Contains(str)){object[]values=newobject[]{m.ToString(),str,Regex.Replace(mcRF[0].Value,"","").Replace(".","")};td.Rows.Add(values);}}btsList.ForEach(p=>fr3_table.Rows.Add(newobject[]{p}));
解决方案:
要么就是这个foreach(MatchminmcTwo){MatchCollectionmcSn=reg.Matches(m.ToString());stringstr=Regex.Replace(mcSn[0].Value,"/","").Replace(".","");varbtsList=BTS_tb.AsEnumerable().Select(p=>p["SN"].ToString()).ToList();MatchCollectionmcRF=RF_reg.Matches(m.ToString());if(btsList.Contains(str)){object[]values=newobject[]{m.ToString(),str,Regex.Replace(mcRF[0].Value,"","").Replace(".","")};td.Rows.Add(values);}else{fr3_table.Rows.Add(newobject[]{str});}}
解决方案:
引用18楼ajianchina的回复:
Quote: 引用10楼qq_27779607的回复:
Quote: 引用9楼ajianchina的回复:
btsList是否仅一列,你自己知道,如果不是一列,在下面重新组织一下newobject[]btsList.ForEach(p=>fr3_table.Rows.Add(newobject[]{p}));你好,这个会add很多重复几次数据,本来只有10条的。但是fr3_table.Rows.Add了几十条,等于str字符串的数据也add了
你是这个意思吧?varbtsList=BTS_tb.AsEnumerable().Select(p=>p["SN"].ToString()).ToList();foreach(MatchminmcTwo){MatchCollectionmcSn=reg.Matches(m.ToString());stringstr=Regex.Replace(mcSn[0].Value,"/","").Replace(".","");MatchCollectionmcRF=RF_reg.Matches(m.ToString());if(btsList.Contains(str)){object[]values=newobject[]{m.ToString(),str,Regex.Replace(mcRF[0].Value,"","").Replace(".","")};td.Rows.Add(values);}}btsList.ForEach(p=>fr3_table.Rows.Add(newobject[]{p}));
btsList.ForEach(p=>fr3_table.Rows.Add(newobject[]{p}));//btsList有10项,其中有一项是和str相同的,怎么移除掉呢?
解决方案:
varbtsList=BTS_tb.AsEnumerable().Select(p=>p["SN"].ToString()).ToList();varbtsList_bak=btsList.GetRange(0,btsList.Count);foreach(MatchminmcTwo){MatchCollectionmcSn=reg.Matches(m.ToString());stringstr=Regex.Replace(mcSn[0].Value,"/","").Replace(".","");MatchCollectionmcRF=RF_reg.Matches(m.ToString());if(btsList.Contains(str)){object[]values=newobject[]{m.ToString(),str,Regex.Replace(mcRF[0].Value,"","").Replace(".","")};td.Rows.Add(values);btsList_bak.RemoveAll(p=>p==str);}}btsList_bak.ForEach(p=>fr3_table.Rows.Add(newobject[]{p}));
解决方案:
add能添加集合?不是addrange么