执行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,但它给出错误"对象引用未设置为对象的实例"
当您只需要查询中的一个元素时,最好使用下面的
。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