我有以下代码。
如果没有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 = ""
};
}
答案 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的值。