可以在LINQ语句中转换为int吗?

时间:2013-08-26 21:30:35

标签: c# linq-to-entities

我想使用简单的LINQ语句在数据库中保存记录。我发现不可能在linq语句中使用Convert.ToInt32,如下所示:

using (var context = new Stc.LeadTracker.DataModel.Models.DBNameContext())
{
    var newLead = new DataModel.Models.LeadRequest();
    newLead.FormId = Convert.ToInt32(formId);
    newLead.Request = queryString;
    newLead.Success = true;
    newLead.RetryCount = 0;
    newLead.CreatedBy = nvCollection["iw"];
    newLead.CreatedDateTime = DateTime.Now;
    context.LeadRequests.Add(newLead);
    context.SaveChanges();
    leadId = newLead.LeadRequestId;
}

我当然可以在LINQ语句之前进行转换,很想知道这是否是我唯一的选择。

3 个答案:

答案 0 :(得分:0)

在你到达using语句之前我会转换Convert.ToInt32(formId)。

Linq不喜欢转换语句,具体取决于ORM

检查一下 Problem with converting int to string in Linq to entities

答案 1 :(得分:0)

你尝试过使用int.Parse()或int.TryParse()吗?另外,为什么你不能使用Convert.ToInt32()?你有任何错误吗?

答案 2 :(得分:-1)

您可以像这样强制转换变量: (INT)formid

你必须检查" formId"可以转换为int。

using (var context = new Stc.LeadTracker.DataModel.Models.DBNameContext())
{
    var newLead = new DataModel.Models.LeadRequest();
    newLead.FormId = (int)formId;
    newLead.Request = queryString;
    newLead.Success = true;
    newLead.RetryCount = 0;
    newLead.CreatedBy = nvCollection["iw"];
    newLead.CreatedDateTime = DateTime.Now;
    context.LeadRequests.Add(newLead);
    context.SaveChanges();
    leadId = newLead.LeadRequestId;
}

这里有一个类似的问题: LINQ to Entities does not recognize the method 'Int32 Parse(System.String)' method, and this method cannot be translated into a store expression