LINQ查询执行出错

时间:2014-07-09 22:34:51

标签: c# sql asp.net-mvc linq asp.net-mvc-4

我正在尝试从数据库中获取值,它与原始SQL查询完美配合,但不能与linq一起使用。我正在分享我的代码,请指导我

LINQ:

using (var db = new SContext())
{
    var abc = db.Locales
                .Where(c => c.Culture == cultureName && c.Key == key)
                .Select(a => a.Value);

   return abc.ToString();
}

SQL RAW(完美工作)

using (var conn = new SqlConnection(_connectionString))
{
    using (var cmd = conn.CreateCommand())
    {
        cmd.CommandText = "SELECT [Value] FROM [Spenotics].[dbo].[Locale] WHERE [Key] = @key AND [Culture] = @culture";
        cmd.Parameters.AddWithValue("key", key);
        cmd.Parameters.AddWithValue("culture", cultureName);
        conn.Open();
        var value = cmd.ExecuteScalar();
        return (string)value;
     }
}

我想将sql查询转换为linq但是它给出错误“对象引用没有设置为对象的实例”

1 个答案:

答案 0 :(得分:0)

每当您只需要查询中的一个元素时,最好使用其中一个

。 First() - 如果为空/未找到则抛​​出,如果重复则不抛出

。 FirstOrDefault() - 如果为空/未找到则返回默认值,如果重复则不返回

。 Single() - 如果为空/未找到则抛​​出,如果存在重复则抛出

。 SingleOrDefault() - 如果为空/未找到则返回默认值,如果存在重复则抛出

var abc = db.Locales
                .Where(c => c.Culture == cultureName && c.Key == key)
                .Select(a => a.Value).FirstOrDefault();

在SQL raw中,使用TOP 1

也是理想的选择
SELECT TOP 1 [Value] FROM [Spenotics].[dbo].[Locale] WHERE [Key] = @key AND [Culture] = @culture