从数据表中检索数据

时间:2018-04-26 18:03:44

标签: c# linq datatable

我尝试使用username使用DataTable使用this示例从UserID LINQ检索//Example 1: var user = (from dr in users.AsEnumerable() where dr.Field<int>("UserID") == 2 select dr).First(); //Example 2: string user = (from dr in users.AsEnumerable() where dr.Field<int>("UserID") == 3 select dr.Field<string>("UserName")).First();

where clause

以上两个例子导致了这个强制转换错误:

  

System.InvalidCastException:&#39;指定的演员表无效。&#39;

但是,如果我的stringint而不是string result = (from row in users.AsEnumerable() where row.Field<string>("UserName") == "TUser" select row.Field<string>("UserName")).First(); 进行搜索,则查询会有效。

.json

如何通过userid检索单个用户名?

更新:

不确定它是否相关,但是通过使用JSON.NET

取消.json文件来填充数据表

示例DataTable users = JsonConvert.DeserializeObject<DataTable>(File.ReadAllText(userPath));

  

[{           &#34; UserID&#34;:2,           &#34;用户名&#34;:&#34;用户&#34;,           &#34; StatusID&#34;:1,           &#34; CreateDate&#34;:&#34; 2018-04-25T14:02:00&#34;,           &#34; CreateBy&#34;:&#34; Admin&#34;,           &#34; ID&#34;:&#34; 9855626A-FEF1-4936-9EF6-DD896F80AE35&#34;       },{           &#34; UserID&#34;:3,           &#34; UserName&#34;:&#34; TUser&#34;,           &#34; StatusID&#34;:1,           &#34; CreateDate&#34;:&#34; 2018-04-25T14:02:00&#34;,           &#34; CreateBy&#34;:&#34; Admin&#34;,           &#34; ID&#34;:&#34; 928D6099-0665-4FC8-BE4C-8E145E56E8BF&#34;       }   ]

填充数据表:

test

1 个答案:

答案 0 :(得分:3)

您需要为UserID

使用正确的数据类型

在数据库中检查您的UserID列类型并使用下表

BigInt -> long
int -> int
SmallInt -> short
varchar/nvarchar -> string