这表示需要返回路径,但如果案件有任何办法我无法达成?感谢
public IEnumerable<RequestCall> GetRequests(string erisim, string sube, string sicil)
{
using (var redisclient = RedisManager.GetClient())
{
var redisUser = redisclient.As<RequestCall>();
if (erisim == "A")
{
return redisUser.GetAll();// .Where(c=>c.Sube=="Y");
}
else if (erisim == "P")
{
return redisUser.GetAll().Where(c => c.Sube == sube);
}
else if (erisim == "C")
{
return redisUser.GetAll().Where(c => c.CagriAcan == sicil);
}
}
}
这表示需要返回路径,但如果案件有任何办法我无法达成?感谢
答案 0 :(得分:1)
你可以尝试这个:
if (erisim == "A")
{
return redisUser.GetAll();// .Where(c=>c.Sube=="Y");
}
else if (erisim == "P")
{
return redisUser.GetAll().Where(c => c.Sube == sube);
}
else if (erisim == "C")
{
return redisUser.GetAll().Where(c => c.CagriAcan == sicil);
}
else
{
return Enumerable.Empty<RequestCall>();
}
答案 1 :(得分:0)
Sudhakar Tillapudi,绝对正确,你需要添加默认条款:
using (var redisclient = RedisManager.GetClient())
{
var redisUser = redisclient.As<RequestCall>();
if (erisim == "A")
{
return redisUser.GetAll();// .Where(c=>c.Sube=="Y");
}
else if (erisim == "P")
{
return redisUser.GetAll().Where(c => c.Sube == sube);
}
else if (erisim == "C")
{
return redisUser.GetAll().Where(c => c.CagriAcan == sicil);
}
else return null;
}
答案 2 :(得分:0)
问题是您没有考虑erisim
不等于A
,B
或C
的情况,因此编译器不会知道该返回什么。
在函数中有一个单一的退出点通常比较简洁,所以不要有多个return
语句,只需返回值,例如
var result = null;
if (erisim == "A")
{
result = ...;
}
else if (erisim == "P")
{
result = ...;
}
else if (erisim == "C")
{
result = ...;
}
return result;
这种方法会强制你定义某些东西来返回(即使没有一个语句是真的),所以你永远不应该得到那些类型的编译器错误。
答案 3 :(得分:0)
只是为了澄清:
并非代码中的所有代码路径都返回IEnumerable<RequestCall>
。例如,如果我将参数erisim传递给值“X”,该怎么办?这不会通过第1,第2或第3 if
条。然后,您的方法退出,而不返回任何内容(这会给您错误消息)。
param erisim
:
-> "A" -> return something -> "P" -> return something -> "C" -> return something -> Anything else -> (this part is missing!)
正如其他人所说,你需要else
来涵盖重新审理的案件。或者只是在方法结束前返回Enumerable.Empty<RequestCall>();
。
另外,作为建议,如果可能,您可以使用enums
而不是“魔术”字符串,或至少使用常量。