返回一个空值的类

时间:2014-01-13 19:00:25

标签: c#

我有以下代码。
如果没有WType为空,我想返回一个空字符串,其中包含Key和Value的空字符串。我收到的错误是“;”是期待。

返回类型必须是:

IEnumerable<WportType>

以下是代码:

if (wType == "Riconda")
{
    return dbContext.data_LookupValues
       .Where(w => w.Category == "WLoc")
       .OrderBy(w => w.SortId)
       .Select(a => new WportType
       {
           Key = a.Key,
           Value = a.Value
       });

}
else 
{
    return  WportType
       {
           Key = "",
           Value = ""
       }; 
}

3 个答案:

答案 0 :(得分:3)

您的方法似乎返回IEnumerable<WportType>。您正在尝试返回单个项目。您需要将其包装在一个集合中:

如下所示:

    if (wType == "Riconda")
    {
        return dbContext.data_LookupValues
           .Where(w => w.Category == "WLoc")
           .OrderBy(w => w.SortId)
           .Select(a => new WportType
           {
               Key = a.Key,
               Value = a.Value
           });

    }
    else 
    {
        return new[] { new WportType { Key = "", Value = "" } };
    }

答案 1 :(得分:2)

return new WportType // you missed new keyword also
   {
       Key = "",
       Value = ""
   }; // and ; here

但这不是代码中的单个问题。 如果部分返回IEnumerable<WportType> else 部分返回简单WportType。您应该从数据库中选择单个对象,或者在 else 部分中使用默认值创建集合:

if (wType == "Riconda")
{
    return dbContext.data_LookupValues
       .Where(w => w.Category == "WLoc")
       .OrderBy(w => w.SortId)
       .Select(a => new WportType {
           Key = a.Key,
           Value = a.Value
       }); // or use something like FirstOrDefault() here

}
else 
{
    return new List<WportType> {
         new WportType { Key = "", Value = "" }
    };
}

答案 2 :(得分:0)

你可能正在寻找这样的东西:

return dbContext.data_LookupValues
           .Where(w => w.Category == "WLoc")
           .OrderBy(w => w.SortId)
           .Select(a => new WportType
           {
               Key = !string.IsNullOrEmpty(wType) ? a.Key : "",
               Value = !string.IsNullOrEmpty(wType) ? a.Value : ""
           });

根据您的问题判断,我不确定您的最终目标是什么,但此方法将保留原始查询的长度,并且当您的wType为null或为空时,只需使用“”设置WportType的值。