Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/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#_List - Fatal编程技术网

C# 如何将数据表转换为列表<;字符串>;?

C# 如何将数据表转换为列表<;字符串>;?,c#,list,C#,List,我尝试使用此代码,但无法执行: SPDatalogic sp = new SPDatalogic(); //datalogic class List<String> dt = new List<String>(); dt = sp.CheckProduct(id); //Datatable List<String> list = new List<String>(); SPBusinesslogic ab = new SPBusinesslog

我尝试使用此代码,但无法执行:

SPDatalogic sp = new SPDatalogic(); //datalogic class
List<String> dt = new List<String>();
dt = sp.CheckProduct(id); //Datatable

List<String> list = new List<String>();

SPBusinesslogic ab = new SPBusinesslogic();  //businesslogic class
String prod;
prod = ab.CheckProduct(id);                   
list.Add(prod);

return list;
SPDatalogic sp=new SPDatalogic()//数据逻辑类
List dt=新列表();
dt=sp.CheckProduct(id)//数据表
列表=新列表();
SPBusinesslogic ab=新的SPBusinesslogic()//业务逻辑类
串针;
产品=ab.CheckProduct(id);
列表。添加(prod);
退货清单;
出现简单错误,如无法将datatable转换为字符串 我不知道怎么做

错误:
错误1:

无法隐式转换类型 “System.Collections.Generic.List”到“string”

错误2:

无法将类型“System.Data.DataTable”隐式转换为 'System.Collections.Generic.List'


这段代码似乎有很多错误。让我们从顶部开始:

SPDatalogic sp = new SPDatalogic(); //datalogic class
List<String> dt = new List<String>();
dt = sp.CheckProduct(id);
List<String> list = new List<String>();
现在,您可以通过
dt.Rows
循环构建
列表

这应该可以正常工作(尽管我怀疑是否有任何理由需要在循环中声明
ab
),但是不清楚
id
是什么。也许这是您所在行中的某种列?如果是这样的话,您可能会想要:

var id = dr["id"];
string prod = ab.CheckProduct(id);
list.Add(prod);

当然,这假定
ab.CheckProduct()
接受一个对象并返回一个字符串。如果
CheckProduct()
不起作用,您需要发布方法签名。

您能告诉我们完整的错误吗?请告诉我们完整的错误,并用它更新您的问题。不要发表评论。如果您没有对行执行任何操作,那么为什么要循环使用
dt.Rows
;可能不返回字符串。您可以使用ab.CheckProduct(id).toString();根据它通常返回的数据将其转换为字符串。是否必须更改
List dt=new List()至<代码>数据表dt=sp.CheckProduct(id)
@MikeChristensen为了比较textbox和datatable的值,我想将其转换为List用于OP,让
CheckProduct()
在一个类中返回
string
,在另一个类中返回
List
,这是令人困惑的。更好的方法是在指示列表的位置使用
CheckProductList()
(或者简单地使用
CheckProducts()
),谢谢。在我看来,id是发票号,我会在那里拿到该发票的产品!如果
SPBusinesslogic.CheckProduct()
返回一个
列表
,您希望将列表的所有元素添加到
列表
,则仍有一个错误无法将类型“System.Collections.Generic.List”隐式转换为“string”,您可以使用
List.AddRange(ab.CheckProduct(id))
foreach (DataRow dr in dt.Rows)
{
    SPBusinesslogic ab = new SPBusinesslogic();  //businesslogic class
    string prod;
    prod = ab.CheckProduct(id);                   
    list.Add(prod);
}
var id = dr["id"];
string prod = ab.CheckProduct(id);
list.Add(prod);