我有一个看起来像
的SQL查询SELECT CONVERT(BIGINT, MY_TABLE_FIELD)
FROM SOME_TABLE
WHERE [CONDITIONS]
我需要将字符串MY_TABLE_FIELD
强制转换为Linq中的长值字段。
我在Linq表达式的select子句中尝试使用long.tryParse
,(long)MY_TABLE_FIELD
和Convert.ToInt64(MY_TABLE_FIELD)
。
我已经阅读了有关转换值的方法,但是我收到错误。我不想使用lambda表达式。
我该怎么办?
答案 0 :(得分:0)
假设您的值实际上可以转换为long
s,您应该可以这样做:
from context.SOME_TABLE
where ...
select Convert.ToInt64(row.MY_TABLE_FIELD)
如果值无法转换为long
,您可能需要考虑从数据库中选择字符串,然后根据更复杂的业务逻辑对值进行后处理。
(如果这不起作用,请提供您正在获取的错误消息,以及有关数据库的更多详细信息等。)
答案 1 :(得分:0)
感谢StriplingWarrior的回答。
我在发布问题后几分钟找到了解决方案。
我在这里分享。
LINQ
var MyList = (from ta in model.Table
select new MyClass
{
StringFieldID = ta.StringFieldID,
OtherField = ta.OtherField
}).ToList();
我在MyClass Code上的工作
public class MyClass
{
private string _StringFieldID;
public long LongFieldID { set; get; }
public string OtherField{set;get;}
public string StringFieldID{
set
{
_StringFieldID= value;
LongFieldID= long.Parse(_StringFieldID);
}
get
{
return _StringFieldID;
}
}
}
因此,每次Linq Query设置StringFieldID的值时,都是进行转换的类。