Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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_Linq_Select_Datatable - Fatal编程技术网

C# 将一列的值获取为字符串,而将另一列的值指定为字符串?

C# 将一列的值获取为字符串,而将另一列的值指定为字符串?,c#,sql,linq,select,datatable,C#,Sql,Linq,Select,Datatable,我可以在C语言中使用DataTable.SelectfilterStatement 还是应该使用Linq 我有一个SQL查询,它返回一个DataTableDT2,其中有两列,[Username]和[LastUpdate] 我想从[LastUpdated]列中获取一个字符串,其中[Username]列等于一个字符串 为了防止这种情况发生,在SQL表中,这两种数据类型都设置为varchar50 我想发布一张图片,但我还不能,首先发布,datatable只是 用户名|上次更新 …管理2 | 2015-

我可以在C语言中使用DataTable.SelectfilterStatement

还是应该使用Linq

我有一个SQL查询,它返回一个DataTableDT2,其中有两列,[Username]和[LastUpdate]

我想从[LastUpdated]列中获取一个字符串,其中[Username]列等于一个字符串

为了防止这种情况发生,在SQL表中,这两种数据类型都设置为varchar50

我想发布一张图片,但我还不能,首先发布,datatable只是 用户名|上次更新 …管理2 | 2015-04-27

在本例中,如果我可以得到第二列的值,其中[Username]=“admin2”

我在C中尝试了以下方法:

string timestamp = "";
DataRow[] dt2result = dt2.Select("Username = 'admin2'");
timestamp = dt2result[1].ToString();
我得到

System.IndexOutOfRangeException:索引超出了数组的边界

我尝试只使用DataRow dt2result=dt2.SelectUsername='admin2';没有括号[]但我得到

无法将类型“System.Data.DataRow[]”隐式转换为“System.Data.DataRow”

我尝试了不同的索引,如dt2result[0]和dt2result[1][0]等,以及dt2result.GetValue0

我知道这是一个基本问题,但请全面回答

提前谢谢

DataRow dt2result = dt2.Select("Username = 'admin2'").First();
我想你会找到正确的那一行。然后使用以下命令获取正确的列:

var timestamp=dtresult[1].ToString();
以下措施也应该起作用:

var timestamp=dt2.Select("Username = 'admin2'")[0][1].ToString();
在这种情况下,如果我能得到第二列的值 [用户名]=“admin2”

有多种方法可以获取最新更新的列值

使用您当前的代码:

DataRow[] dt2result = dt2.Select("Username = 'admin2'");
您将获得一个DataRow数组,您可以检查数组的长度并访问第一行,如下所示:

DataRow firstRow = dt2result[0];
要选择第二列的值,您需要:

var lastUpdatedValue = firstRow[1];
还有一个LINQ选项


我使用r.FieldLastUpdated,因为您有LastUpdated列的varchar数据类型。作为旁注,最好使用特定于日期时间的类型来存储日期和时间值

为什么要将varchar用于datetime字段?LastUpdated,因为我是SQL的新手,这是我尝试的第一个隐式接受“DateTime.Now”值的数据类型,其格式与我在SQL中使用DateTime字段从Ctry传递该值时的格式相同,并将其转换为cUse DateTime或datetime2中的DateTime,如果您是新手,我建议您改用实体框架。或者SqlDataReader。不要使用datatables/dataset/Sqladapters。这是一种会加快页面加载速度的做法吗?正如其他人所质疑的那样,我不知道为什么要使用字符串来存储datetime数据类型。还有,为什么要通过EF将数据读入datatable而不是强类型对象,甚至直接使用SqlDataReader?数据表/数据集很少是正确的使用方法。你在几秒钟内就回答了我所要的。我忽略了。第一个原因是我还没有引用Linq。我把自己限制在c的范围内,这很令人沮丧。谢谢你们的建议。本周我将研究SQLDataReader,对于我们在一家小型家具连锁店工作时使用的许多较小的查询来说,它似乎是正确的
var lastUpdatedValue =  dt2.AsEnumerable()
    .Where(r => r.Field<string>("Username") == "admin2")
    .Select(r => r.Field<string>("LastUpdated"))
    .FirstOrDefault();