作为C#的新手,我正在尝试从数据中读取每一行。然后根据特殊列的值,我将该值用于开关。
这里是困扰我的代码部分:
foreach(DataRow row in dtTableList.Rows)
{
string selection = (from DataRow line in dtTableList.Rows select (string)line["Name"]);
switch(selection)
{
//The switch case statement
}
带有“字符串选择”的行显然是错误的,我收到错误消息:
“无法隐式转换 输入'System.Collections.Generic.IEnumerable'到'string'“
我尝试将string selection
替换为var selection
,但我无法在我的切换中使用它。
你们中的任何人都知道可能导致我的错误的原因以及如何解决它吗?
有关信息,我尝试在StackOverflow上应用另一个post的代码。
答案 0 :(得分:4)
DataTable
通常会存储多行,因此结果为IEnumerable<string>
而非string
。如果您只对第一行感兴趣,或者它只包含一行:
string selection = dtTableList.AsEnumerable()
.Select(r => r.Field<string>("Name"))
.FirstOrDefault();
// selection == null --> not a single row at all;
如果您已经在foreach循环中,则根本不需要LINQ查询:
foreach(DataRow row in dtTableList.Rows)
{
string selection = row.Field<string>("Name");
switch(selection)
{
// ...
}
}
答案 1 :(得分:0)
您可以使用以下代码
string selection = dtTableList.AsEnumerable().Select(dr => dr.Field<string>("CoumnName").ToString()).FirstOrDefault();