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