我有以下函数在数据库中搜索名为" description"的列的条目。具有相同的价值。现在它只返回它找到的第一个值,或者默认值是不存在的值。
public static NewCode GetAltCode(int altCodeVer, string descrip)
{
var sql = @"select Code, Description, VersionID from Code.CodeLookup where versionid=@vers and description=@description";
return ObjectFactory.GetInstance<IDatabaseFactory>().Query<NewCode>(sql, new { vers = altCodeVer, description = descrip, }).FirstOrDefault();
}
我有这个if语句要检查并确保结果不是空的,如果是,则说没有找到&#34;代码&#34;
[Authorize(parentAction: "Edit")]
public ActionResult Lookup(string Code, int? VersionId = null)
{
var Info = VisitViews.GetDescriptionByVersionId(Code, VersionId.HasValue ? VersionId.Value : 9);
var description = string.Empty;
// CHECK FOR NULL
if (Info != null)
{
description = Info.Description;
if (VersionId == 9)
{
var altInfo = VisitViews.GetAltCode(10, description);
}
if (VersionId == 10)
{
var altInfo = VisitViews.GetAltCode(9, description);
}
}
else
description = "CODE NOT FOUND";
return Json(new { Description = description });
}
我的问题是,有没有办法将结果存储在数组中(甚至将它们存储在列表中并在列表中调用ToArray),而不是使用FirstOrDefault?我试图获取在sql搜索期间收到的所有代码而不只是一个,这样我正在处理的另一个函数可以遍历数组并将项目放在需要的UI中。
答案 0 :(得分:1)
以下是这篇文章的回答:
将返回类型更改为NewCode[]
,并将.FirstOrDefault()
替换为.ToArray()
public static NewCode[] GetAltCode(int altCodeVer, string descrip)
{
var sql = @"select Code, Description, VersionID from Code.CodeLookup where versionid=@vers and description=@description";
return ObjectFactory.GetInstance<IDatabaseFactory>().Query<NewCode>(sql, new { vers = altCodeVer, description = descrip, }).ToArray();
}