在C#中将NULL局部变量用于List

我可以(在任何地方)找到的从SQL查询中获取结果到局部变量的最佳解决方案是使用NULL List< dynamic>.或IEnumerable< dynamic>变量声明.

通过执行以下操作来创建变量:

@{
    IEnumerable<dynamic> myVariable = null;
}

然后,变量可以从数据库查询中获取值,例如:

@{
    try
    {
        Database db = Database.Open("name"); // name of connectionString configured in web.config
        string myQuery = "EXEC dbo.Get_Results @Param1=@0, @Param2=@1";
        myVariable = db.Query(myQuery, @Param1, @Param2);
        db.Close();
        db.Dispose();
    }
    catch (Exception ex)
    {
        // Do something
    }

这使我可以执行以下操作:

@if(myVariable != null)
{
    foreach (var row in myVariable)
    {
        // Do something
    }
}

这完美地工作,但是我仍然好奇如何使用List< dynamic>做同样的事情,而不是使用IEnumerable< dynamic>.我使用它的方式.

List< dynamic>是什么?我用于IEnumerable< dynamic>的等效解决方案?

我知道我的问题本身很简单,但是当我试图创建一个可以从db.Query(commandText)接收结果的类时,花了我很长时间才能解决无法隐式转换错误的过程-声明的变量.因此,我认为我应该提供更多详细信息,以防其他人尝试找出相同或相似的内容.我在IEnumerable< dynamic>中找到了解决方案.在无关的主题中,我大开眼界,可以轻松解决自己想解决的问题.

解决方法:

Enumerable.Empty< string>()不为null.它是一个空字符串序列.请注意,例如,以下代码显示“ false”:

var sequence = Enumerable.Empty<string>();
Console.WriteLine(sequence == null);

您可能要创建一个新的(空)列表:

List<dynamic> x = new List<dynamic>();

或者,如果您确实需要list变量保存空引用:

List<dynamic> x = null;
上一篇:c#-asp.net mvs部分/部分中的部分?


下一篇:CodeGo.net>如何避免在布局页面中使用“使用System.Web.Optimization”