返回带有输入ID的列值

时间:2014-02-23 20:05:06

标签: linq entity-framework entity-framework-4 linq-to-entities

我试图在一个名为ID的表中返回一个列值。

    public String PenTypes(int?id, Pen pen)
    {
    int num;

      var query = from d in db.Pens
                   where d.ID == 1
                   select d.Type;

      num=Convert.ToInt(query);
      return num;

我不知道我哪里出错了。我知道它很简单,但我真的很擅长使用Entity Framework。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

如果您想通过ID获取实体,建议您使用DbSet<TEntity>.Find方法:

  var pen = db.Pens.Find(id);
  if (pen == null)
     // handle case when pen is not found

  return pen.Type; // if type is string, then you possibly need to parse it

或者您可以使用FirstOrDefault / SingleOrDefault

  var pen = db.Pens.FirstOrDefault(p => p.ID == id);

您当前的代码有几个问题:

  • query的类型为IQueryable<T>(其中T是pen.Type属性的类型)。此值无法转换为整数
  • 如果您使用主键搜索,则
  • id不应为空
  • 如果num是整数,则方法的返回类型应为int而不是string