从SQL查询结果创建一个数组

时间:2014-08-04 15:36:34

标签: c# sql arrays

我有以下函数在数据库中搜索名为" 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中。

1 个答案:

答案 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();
}