【发布时间】:2016-06-08 20:28:54
【问题描述】:
我正在尝试使用 c# 执行原始查询。
这就是我所做的
var accounts = conn.Database.SqlQuery<IEnumerable<string>>("SELECT TOP 1 a.* FROM zipcodes_to_accounts AS c " +
"INNER JOIN accounts AS a ON a.id = c.account_id " +
"WHERE c.zip_code = @p0 "+
"ORDER BY a.completed_ll + a.completed_cp ASC", zipcode).ToArray();
那我想取第一条记录,转成json对象。
if (accounts.Count() > 0)
{
return JsonConvert.SerializeObject( accounts.First() );
}
但是查询给了我一个错误
结果类型“System.Collections.Generic.IEnumerable`1[System.String]”可能不是抽象的,必须包含默认构造函数。
accounts 表有一些列是 varchar、datetime、integers。我怎样才能让这个查询工作?
更新
将IEnumerable 转换为列表,就像它工作的答案中建议的那样。但现在 JsonConvert 返回一个空对象。这是我当前的代码
//getAccount
public string GetAccount()
{
string zipcode = StringHelpers.StringOrNull(Request["zip_code"]);
if (zipcode != null)
{
var accounts = conn.Database.SqlQuery<List<string>>("SELECT TOP 1 a.* FROM zipcodes_to_accounts AS c " +
"INNER JOIN accounts AS a ON a.id = c.account_id "+
"WHERE c.zip_code = @p0 "+
"ORDER BY a.completed_ll + a.completed_cp ASC", zipcode).ToList();
var firstAccount = accounts.FirstOrDefault();
if (firstAccount != null)
{
return JsonConvert.SerializeObject(firstAccount);
}
}
return "{}";
}
当我调试我的代码时,这是我看到的
【问题讨论】:
标签: c# asp.net asp.net-mvc entity