Cod*_*ody 3 c# sql linq linq-to-entities entity-framework
我试图sys_id从sys_id列是varchar类型的表中选择最大值.有些行包含文本,但我只关心数值.
我尝试了以下一些代码,但它们不起作用 - LINQ to Entities似乎不支持此操作.
public string GetSysID()
{
using (var context = new DbEntities())
{
int i;
// var intQuery = context.myTable.Where(t => int.TryParse(t.sys_id, out i)).Max();
int intQuery = Convert.ToInt32(context.myTable.Where(p => IsNumber(p.sys_id)).Max(p => p.sys_id));
//return context.drawings.Max(p => p.sys_id);
return intQuery.ToString();
}
}
public static bool IsNumber(string value)
{
int n;
return int.TryParse(value, out n);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用LINQ to Entities做到这一点?
使用SqlFunctions.IsNumeric和Cast
iQueryableSource
.Where(x => SqlFunctions.IsNumeric(x.Number + ".0e0") == 1) // see explanation about .0e0 below
.Select(x => x.Number)
.Cast<int>()
.Max()
Run Code Online (Sandbox Code Playgroud)
UPDATE
您可以发现与字符串中的点或货币符号相关但仍然存在的问题IsNumeric == 1.因为你只想要整数,你应该.0e0像这样添加一个字符串SqlFunctions.IsNumeric(x.Number + ".0e0") == 1
| 归档时间: |
|
| 查看次数: |
4604 次 |
| 最近记录: |