我正在尝试从数据库中获取值,它与原始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但是它给出错误“对象引用没有设置为对象的实例”
答案 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