c#中的列表集合 [英] Collection Of List in c#

查看:55
本文介绍了c#中的列表集合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

public static List<spectrumitem> GetSpectrumBandStartValue(SqlConnection nodeDbCon, uint Starttime)
        {
            List<spectrumitem> SpectList = new List<spectrumitem>();
         
                int cid = 0;
                uint st = 0;
                int pid = 0;
                int bs = 0;
                int tresh = 0;
                short dwl = 0;
                short corl = 0;
                int sp = 0;
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = nodeDbCon;
                cmd.Parameters.Add("@StartTime", SqlDbType.Int).Value = Starttime;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "dbo.usp_GetSpectrumBandStart";
                SpectrumItem SpectrumItem = new SpectrumItem(st, pid, bs, tresh, dwl, corl, sp,cid);
                DataTable dt = new DataTable();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);
                foreach (DataRow cdr in dt.Rows)
                {
                    st = Convert.ToUInt32(cdr[0]);
                    bs = Convert.ToInt32(cdr[1]);
                    pid = Convert.ToInt32(cdr[2]);
                    cid = Convert.ToInt32(cdr[3]);
                    SpectList.Add(SpectrumItem);
                }
             
            return SpectList;
                
        }



当我执行代码时,一切运行良好,列表项计数为230 ..但所有列表值230都是0 ..如何将值添加到列表..请帮助我


When i execute the code everything runs good,list item count is 230.. but all list values of 230 is 0.. How to add the values to list.. Please help me

推荐答案

问题出在你的循环周围...

你是什么做的是:

1.创建一个名为SpectrumItem的变量(在循环外)

2.运行一个循环,在其中更新多个变量并将SpectrumItem变量添加到清单(每次都很相似)



你需要做的是:

1.运行一个循环,并添加一个新创建的每次迭代中的SpectrumItem ......

The problem is with/around your loop...
What you do is:
1. Create a variable named SpectrumItem (outside the loop)
2. Run a loop, in which you update several variables and add the SpectrumItem variable to the list (the VERY SAME each time)

What you have to do is:
1. Run a loop, and add a newly created SpectrumItem in each iteration...
foreach (DataRow cdr in dt.Rows)
{
  st = Convert.ToUInt32(cdr[0]);
  bs = Convert.ToInt32(cdr[1]);
  pid = Convert.ToInt32(cdr[2]);
  cid = Convert.ToInt32(cdr[3]);

  SpectrumItem SpectrumItem = new SpectrumItem(st, pid, bs, tresh, dwl, corl, sp,cid);

  SpectList.Add(SpectrumItem);
}


嗯。

为什么每次都添加相同的商品?

您创建一个SpectrumItem实例:

Um.
Why are you adding the same item each time?
You create one instance of a SpectrumItem:
SpectrumItem SpectrumItem = new SpectrumItem(st, pid, bs, tresh, dwl, corl, sp,cid);

包含所有零值,然后重复添加它而不更改它:

with all zero values, and then you add it repeatedly without changing it:

foreach (DataRow cdr in dt.Rows)
{
    st = Convert.ToUInt32(cdr[0]);
    bs = Convert.ToInt32(cdr[1]);
    pid = Convert.ToInt32(cdr[2]);
    cid = Convert.ToInt32(cdr[3]);
    SpectList.Add(SpectrumItem);
}

我怀疑你真正想做的是:

I suspect that what you actually want to do is this:

foreach (DataRow cdr in dt.Rows)
{
    st = Convert.ToUInt32(cdr[0]);
    bs = Convert.ToInt32(cdr[1]);
    pid = Convert.ToInt32(cdr[2]);
    cid = Convert.ToInt32(cdr[3]);
    SpectrumItem SpectrumItem = new SpectrumItem(st, pid, bs, tresh, dwl, corl, sp,cid);
    SpectList.Add(SpectrumItem);
}

并完全删除前面的实例。

And remove the earlier instance completely.


这篇关于c#中的列表集合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆