怎用遍历dataset取出其中一部分字段的值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎用遍历dataset取出其中一部分字段的值?相关的知识,希望对你有一定的参考价值。

从excel中读取到了8列值放到了dataset中,现在如何遍历dataset取出其中第2,3,7列的值然后赋给一个list集合?我知道对高手来说不到十行代码,对C#语言不熟,别告诉我如何做,我大体思路有但不知道如何写 ,请给我写个清楚易懂 的代码谢谢

神问题和神回答
问题是问的取DataSet 第 2,3,7列的值?存入List集合?
首先DataSet包含的表格里面才有行列概念,它自身哪有第几第几列,其次问的是列,但是有好多回答都是取的是行,行也就算了,关键是第2,3,7 索引应该是1,2,6
你们直接大大方方的写个2,3,7算是啥意思啊
其次,数据取出来了,你们用List<string>来接受,你们居然真的打算是把这几列的数据首尾相接,给他拼出个8*3=24个string吗?你们觉得这可能这样吗?
这貌似取的是List <Model> 的节奏吧。追问

感觉您好厉害,可以给我写个代码么,枫之伤NO1回答的是不是把索引改一下就可以了?还有后面的问题,放到集合中就拼接了 不换行?没有按原来的列的格式吗?我要放到集合中然后导出到文本中,格式要和excel里面一样,只不过导出了部分列,用|分割,可不要全部在每列尾巴后面拼接呀!那就不是列了

追答

早一些说的详细点多好啊 

List<string> result = new List<string>();//这个集合用来存储结果字符串
            DataSet dt = new DataSet();//这里应该是从excel导入获取的dataset
            DataTable dtsource = dt.Tables[0];//假如数据存放在dataset的第一个表中
            for (int i = 0; i < dtsource.Rows.Count; i++)
            
                string itemstring = string.Empty;
                itemstring += dtsource.Rows[i][1].ToString()+"|";//第二列
                itemstring += dtsource.Rows[i][2].ToString()+"|";//第三列
                itemstring += dtsource.Rows[i][6].ToString();//第七列
                result.Add(itemstring);
            
            //下面测试写入文本

            using(System.IO.StreamWriter sw = new System.IO.StreamWriter("D:\\\\1.txt"))
            
                foreach (string item in result)
                
                    sw.WriteLine(item);
                
            

追问

果然是大神级别的 最后一个问题 指定的列取出来之后 肯定是很多行的 如果我第一列中其中一行内容为chck,那怎么根据chck取出同一行的其他列数据输出到文本中?根据chck把QQQQ,EEEEE都输出?chck是临时变量 不固定

追答

稍微修改下for循环,加个判断

  for (int i = 0; i < dtsource.Rows.Count; i++)

            

                if (dtsource.Rows[i][1].ToString() == "chck")//就加这个条件 这个==后面的内容,你可以换成你需要匹配的变量就行

                

                    string itemstring = string.Empty;

                    itemstring += dtsource.Rows[i][1].ToString() + "|";//第二列

                    itemstring += dtsource.Rows[i][2].ToString() + "|";//第三列

                    itemstring += dtsource.Rows[i][6].ToString();//第七列

                    result.Add(itemstring);

                

            

追问

大神您是不是不小心手抖了一下 怎么导出来是空的呀?

追答

大哥,你是不是C#刚搞吧,要不就是你数据源里,这个值他有空格
你走的是纯复制路吧 if语句里面
dtsource.Rows[i][1].ToString().Trim() == "chck" 这句加个Trim()
你也考虑考虑嘛,所有数据都倒得出来,加个条件,就不出来,也不可能的,除非就是条件没执行呗,数据格式不对呗这些。

参考技术A DataTable dexcel =DataSet数据;
List<string> list = new List<string>(); 创建一个list集合
for (int r = 1; r < dexcel.Rows.Count; r++) //循环所有行

//取出2,3,7列数据放到list集合中
list.add(dexcel.Rows[r][2].Tostring());
list.add(dexcel.Rows[r][3].Tostring());
list.add(dexcel.Rows[r][7].Tostring());

看的懂嘛?追问

你这是取出第237行的数据吧?不过能看懂的 嘿嘿

追答

看来你还是没看懂,dexcel.Rows[r] 得到的是当前行的数据 就是一整行的。

dexcel.Rows[r][0] 是当前行的第一列的数据,你要取2 3 7 行的数据分别就是
dexcel.Rows[r][1] ,dexcel.Rows[r][2],dexcel.Rows[r][6] 我上面疏忽了,列的索引是从0开始的

还有我要说明一下我写的循环为什么不从i=0开始,是因为我考虑到了你的表中会有表头,如果没有表头 请将i=1改为0。

最后 我不介意放到List 集合中,你可以创建一个这三个值的DTO类
List 这样会好一些吧。

参考技术B DataTable table=dataset.Tables[0]; //定义一个DataTable对象为数据集中的第一个数据表
List<string> re=new List<string>(); //定义一个List集合对象
for(int i=0;i< table.Rows.Count;i++) //遍历数据表

if(i==2||i==3||i==7)


re.Add(table.Rows[i][0]); //如果符合条件,就插入到集合中



return re; //返回集合
呵呵,刚好十行代码。不是高手。
参考技术C 楼上的有问题。(在上面修改)
DataTable table=dataset.Tables[0];
List<string> re=new List<string>();
for(int i = 0;i< 8;i++)

if(i == 2 || i==3 || i == 7)

for(int j=0;j< table.Rows.Count;j++)

re.Add(table.Rows[i][j]);



re就是你要的集合。

java遍历集合某字段,判断是不是存在相同的值。

java遍历集合某字段,判断是否存在相同的值。数据库有几十条数据,页面每次可编辑15条。编辑时可新增行和删除行。如何判断某字段值是否唯一??求助。

注:for (GoodsBean goods : list)是对链表进行循环遍历
spid--商品ID,spmch--商品名称
这个例子是我从现在做的一个购物车的例子里抽出来的一部分,可以运行,你试试 ,呵呵

/**
* 判断一个list里某个字段是否全相等
* @param list
* @return
*/
public static boolean isEqual(List<GoodsBean> list)
List<String> listid = new ArrayList<String>();
for (GoodsBean goods : list)
String spid = goods.getSpid();
listid.add(spid);

if (listid != null)
String firstspid = listid.get(0);
for (String spid : listid)
if (!spid.equals(firstspid))
System.out.println("有一个不相等,返回false");
return false;



return true; //循环完没有找到相等的返回true

return false; //为空返回false


GoosBean是存放在List里的一个javabean

public class GoodsBean implements Serializable

/**
*
*/
private static final long serialVersionUID = 1437224000720087048L;
private String spid;
private String spmch;

// 构造方法
public GoodsBean(String spid, String spmch)
this.spid = spid;
this.spmch = spmch;



public GoodsBean()



// 一般方法
public String getSpid()
return spid;


public void setSpid(String spid)
this.spid = spid;


public String getSpmch()
return spmch;


public void setSpmch(String spmch)
this.spmch = spmch;

追问

谢谢你。可惜这个和我的不太一样。

这个问题我解决了。把页面编辑过的行设置标志位为1,通过set判断页面数据是否重复。再查出数据库中所有的数据为map,把map中已编辑过的数据从map中remove(),得到未编辑过的所有数据。再把页面中编辑过的和新增的数据和map比较,如果map的value相同,则存在重复的。

参考技术A 在输入时,全部遍历判断是否存在

~~追问

不行。编辑第一页时,如果输入第二页的值,就不行了。

以上是关于怎用遍历dataset取出其中一部分字段的值?的主要内容,如果未能解决你的问题,请参考以下文章

怎么遍历dataset取值?

ubuntu怎用使用命令搜索软件源中的软件

字段是多个值拼接的,怎么一一取出来

element 列表其中一个字段为数组如何取出数据

mysql 在查询中,取出字段中的部分值

java遍历集合某字段,判断是不是存在相同的值。