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

从excel中读取到了8列值放到了dataset中,现在如何遍历dataset取出其中第2,3,7列的值然后赋给一个list集合?我知道对高手来说不到十行代码,对C#语言... 从excel中读取到了8列值放到了dataset中,现在如何遍历dataset取出其中第2,3,7列的值然后赋给一个list集合?我知道对高手来说不到十行代码,对C#语言不熟,别告诉我如何做,我大体思路有但不知道如何写 ,请给我写个清楚易懂 的代码谢谢 展开
 我来答
百度网友ce9f999
推荐于2017-11-25 · TA获得超过406个赞
知道小有建树答主
回答量:540
采纳率:100%
帮助的人:547万
展开全部
神问题和神回答
问题是问的取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);
                }
            }
蟑螂ipis
2013-06-05 · TA获得超过203个赞
知道小有建树答主
回答量:427
采纳率:0%
帮助的人:230万
展开全部
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 这样会好一些吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianweimol
2013-06-05 · TA获得超过360个赞
知道小有建树答主
回答量:214
采纳率:0%
帮助的人:87.4万
展开全部
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; //返回集合
呵呵,刚好十行代码。不是高手。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a87cc15
2013-06-05 · 超过20用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:34.3万
展开全部
楼上的有问题。(在上面修改)
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就是你要的集合。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式