先将DataTable转换字段类型,在统一用字符串类型去执行Linq语句
//将原DataTable 字段更新为String类型
private DataTable UpdateDataTable(DataTable dt)
{
DataTable dtResult = new DataTable();
dtResult = dt.Clone(); //克隆表结构
foreach (DataColumn col in dtResult.Columns)
{
col.DataType = typeof(String); //修改列类型
}
//向新表中添加数据
for (int row = 0; row < dt.Rows.Count; row++)
{
DataRow dr = dtResult.NewRow();
for (int col = 0; col < dt.Columns.Count; col++)
{
dr[col] = dt.Rows[row][col].ToString();
}
dtResult.Rows.Add(dr);
}
return dtResult; //返回希望的结果
}
执行Linq
var query1 =
from db in datatable.AsEnumerable()
where ((db.Field<String>("UserName") == "Test") || ((db.Field<String>("UserID") == "TestID") && (db.Field<String>("Password") == "password"))) && (db.Field<String>("Country").ToUpper().IndexOf("CN") < 0) && (db.Field<String>("Age") != "18")
select new
{
UserName = db.Field<String>("UserName"),
UserID = db.Field<String>("UserID"),
// Qty = db.Field<String>("Qty"),
TestID = db.Field<String>("TestID"),
Password = db.Field<String>("Password"),
Country = db.Field<String>("Country"),
Age = db.Field<String>("Age"),
};
//查询结果显示
foreach (var obj in query1)
{
//obj.UserName
//obj.Age
}