执行LINQ查询时出错

本文关键字:出错 查询 LINQ 执行 | 更新日期: 2023-09-27 18:12:09

我试图从数据库中获取值,它与原始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 (Working Perfect)

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,但它给出错误"对象引用未设置为对象的实例"

执行LINQ查询时出错

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

。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