Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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# 如何将数据列填入(写入)列表<>;?_C#_Sql_Asp.net_N Tier Architecture - Fatal编程技术网

C# 如何将数据列填入(写入)列表<>;?

C# 如何将数据列填入(写入)列表<>;?,c#,sql,asp.net,n-tier-architecture,C#,Sql,Asp.net,N Tier Architecture,我试图获取一个带有值的datacolumn(已经填入数据表中),并将其写入访问层中的auto属性中。目前,我使用的方法是从sql中获取数据并将值传递给gird。我正在尝试使用该方法,并且已经填充了datatable,但问题是,auto属性只读取列名,因此我在另一个控件(列表框)中获取列名。下面是我在BLL中的方法 DAL d = new DAL(); public Object getfeechallan(Bal B) { sqlcommand cmd = new sqlcommand("s

我试图获取一个带有值的datacolumn(已经填入数据表中),并将其写入访问层中的auto属性中。目前,我使用的方法是从sql中获取数据并将值传递给gird。我正在尝试使用该方法,并且已经填充了datatable,但问题是,auto属性只读取列名,因此我在另一个控件(列表框)中获取列名。下面是我在BLL中的方法

DAL d = new DAL();

public Object getfeechallan(Bal B) 
{
sqlcommand cmd = new sqlcommand("select * from tblfee where fee_challan_No like @abc,d.con");
cmd.parameters.addwithvalue("@abc","%"+b.fee_challan_No+"%");
datatable dt=d.getdatafilter(cmd);
foreach(datacolumn dd in dt.columns)
{
if(dd.columnname=="ftid")
{
list<DataColumn> dc = new list<DataColumn>();
dc.Add(dd);
b.abc=dc;
}

} return dt;


}
自动属性是

public list<DataColumn> abc {get; set;}
公共列表abc{get;set;}

如果您试图获取包含特定列中所有值的列表 您不能只引用列 您需要循环该列的所有行

List<object> values = new List<object>();
for(int i = 0; i < dt.Rows.Count(); i++)
{
    values.Add(dt[i]["columnName"]);
}
列表值=新列表();
对于(int i=0;i
好的。。所以下面的例子应该可以做到

public DataTable getfeechallan(Bal b)
    {
        SqlDataAdapter sdb = new SqlDataAdapter("Select count(*) From reserve", con);
        DataTable dt = new DataTable();
        List<string> dc = new List<string>();

        sdb.Fill(dt);

        foreach (DataRow dd in dt.Rows)
        {
           dc.Add(dd["ftid"].ToString());
        }

        Bal.abc = dc;

        return dt;
    }
公共数据表getfeechallan(Bal b)
{
SqlDataAdapter sdb=新SqlDataAdapter(“从保留中选择计数(*),con);
DataTable dt=新的DataTable();
List dc=新列表();
sdb.填充(dt);
foreach(数据行dd在dt.行中)
{
dc.Add(dd[“ftid”].ToString());
}
Bal.abc=dc;
返回dt;
}

另一个观察结果。除非需要返回数据表,否则将返回类型更改为“void”。我假设您需要的所有数据现在都在“Bal”对象中。

当您说“带值的数据列”时,您的确切意思是什么?你是说当你将数据列添加到列表中时,并没有设置所有的数据列属性吗?我的意思是我想将这个名为“ftid”的特定列中包含的值复制到列表中。这样我们就清楚了。您想要实际的数据列吗?不是datatable行中的数据?数据列正是如此。数据表上的列集合。它们具有名称、数据类型和长度等属性。是的,只需一列数据就可以了。看看你的代码。。。除了在找到所需列后继续循环所有列之外。。。我看不出有什么问题。将列表赋值下的“return dt”移动到“Bal”对象,以便在找到col“ftid”后立即退出,如果这是您想要的唯一col。顺便说一句,当您在分配给“Bal”的列表中查看该列时,该列缺少哪个值。这应该可以工作。我忽略了这一点,即我必须循环所有行以获取列内容。谢谢你,雷,让我试试,我会带着结果回来的。顺便说一句,感谢void不会工作,因为我将此方法作为数据源提供给gridview,gridview不接受void,因为void实际上不返回任何内容。这很好。。。我只是大声地想:)嗨。。你把这个整理好了吗?我还没有机会。我将在尝试后立即发表评论
public DataTable getfeechallan(Bal b)
    {
        SqlDataAdapter sdb = new SqlDataAdapter("Select count(*) From reserve", con);
        DataTable dt = new DataTable();
        List<string> dc = new List<string>();

        sdb.Fill(dt);

        foreach (DataRow dd in dt.Rows)
        {
           dc.Add(dd["ftid"].ToString());
        }

        Bal.abc = dc;

        return dt;
    }