获取EntityFramework中的数据按字符串过滤

时间:2016-03-09 11:36:55

标签: c# asp.net-mvc string model-view-controller automapper

我有字符串我不知道如何将它与数据库中的数据相匹配。

我使用Automapper,它需要一个int来使用Find(id),因为我传入一个字符串我不能这样做因为它抛出一个错误(这是有意义的,因为字符串不是PK或FK)。

我的问题是_如何告诉我的函数获取我传入的字符串并在数据库中找到匹配的条目并返回结果?我在下面提供了我的代码。

方法

    public FixtureViewModel ChartererModal(string id)
    {
        var fixtures = db.tbl_vessel_fixtures.Find(id);
        var vm = Mapper.Map<FixtureViewModel>(fixtures);            
        return vm
    }

5 个答案:

答案 0 :(得分:1)

试试这个:

public ActionResult ChartererModal(string id)
{
    int intValue;
    bool parsed = Int32.TryParse(id, out intValue);

    if (!parsed)
        throw new Exception("Error during parsing string to integer");

    var fixtures = db.tbl_vessel_fixtures.Find(intValue);
    var vm = Mapper.Map<FixtureViewModel>(fixtures);            
    return PartialView("_ChartererDetails", vm);
}

或者您可以尝试更改方法签名以接受整数,例如:

public ActionResult ChartererModal(int id)
{
     ....
}

答案 1 :(得分:0)

你能尝试将字符串解析为int:

int numberid = Int32.Parse(id);
var fixtures = db.tbl_vessel_fixtures.Find(numberid);

只要你的字符串输入是一个数字你的罚款。

答案 2 :(得分:0)

假设id参数实际 是对象的ID,只需将参数类型更改为int

public ActionResult ChartererModal(int id)

答案 3 :(得分:0)

如果字符串(id)不是PK,您可以使用Linq查询来检索fixtures-entity:

db.tbl_vessel_fixtures.FirstOrDefault(vf => vf.<property name> == id)

当然,这可以在tbl_vessel_fixtures实体的proprty中找到id-string,db是DbContext,而tbl_vessel_fixtures是DbContext的DbSet。

答案 4 :(得分:0)

使用linq的where子句来查找匹配字符串语法的记录看起来像

Collection.Where(x =&gt; x.Name ==&#34; Fido&#34;)