如何在Linq to Entities中进行SELECT CONVERT(bigint,some_field)

时间:2014-07-30 18:34:36

标签: c# sql linq entity-framework casting

我有一个看起来像

的SQL查询
SELECT CONVERT(BIGINT, MY_TABLE_FIELD)
FROM SOME_TABLE
WHERE [CONDITIONS]

我需要将字符串MY_TABLE_FIELD强制转换为Linq中的长值字段。

我在Linq表达式的select子句中尝试使用long.tryParse(long)MY_TABLE_FIELDConvert.ToInt64(MY_TABLE_FIELD)

我已经阅读了有关转换值的方法,但是我收到错误。我不想使用lambda表达式。

我该怎么办?

2 个答案:

答案 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的值时,都是进行转换的类。