如何使用 if inside public object C# asp.net
how using if inside public object C# asp.net
我是 C# 新手,在 "public object" 方法中使用 if 时遇到问题,这是我的代码:
public object Login([FromBody] MailParameters data)
{
UmbracoDatabase db = ApplicationContext.DatabaseContext.Database;
var select = new Sql("SELECT UserID FROM Users where Email='" + data.Email + "';");
var ids = db.Fetch<listUsersChecks>(select);
if (ids)
{
var getByEncrypt = new Sql("SELECT * FROM Users where Email='" + data.Email + "' AND password='" + data.Password + "';");
var listue = db.Fetch<listUsers>(getByEncrypt);
}else{
var listue = "";
}
return listue;
}
输出是:
error CS0029: Cannot implicitly convert type 'System.Collections.Generic.List<LoginController.listUsersChecks>' to 'bool'
错误在if(ids){
,如何解决?
谢谢
查看错误消息,if
语句需要布尔值,但您输入的是列表。在这种情况下,您的 ids
是一个列表 List<LoginController.listUsersChecks>
由于是列表,您可以通过计算列表中的项目数来查看:
if(ids.Count >0){} else{}
var ids = db.Fetch<listUsersChecks>(select);
这会给你一个 List<listUsersChecks>
和一个 if
条件需要一个 bool
来评估它是否应该被执行。
如果你想在列表中有条目时执行 if
语句,你应该使用
if(ids.Count > 0)
{
//logic
}
Count
是 List
的 属性 并给出列表中的项目数。
为了更清楚你也可以这样写。
bool hasItems = ids.Count > 0;
if(hasItems)
{
//logic
}
您也可以使用 LINQ 的 Any
方法。
Determines whether any element of a sequence exists or satisfies a
condition.
看起来像
if(ids.Any())
{
//logic
}
有关详细信息,请查看 101 LINQ-Samples
并非所有代码路径 return 一个值。你必须在 if 语句之前定义你的 return 对象,并且在每个分支中只设置 it.and 至于 ids,它本身不是一个有效的布尔表达式,你可以尝试 ids.Any()
您似乎希望 C# 支持 "truthy" 和 "falsey" 值,例如 Javascript。在C#中,没有"truthy"或"falsey"的概念。 if
中的表达式必须计算为布尔值 true
或 false
。你真正想要做的是使用像这样的 Linq 表达式:
if(ids.Any())
{
...
}
我是 C# 新手,在 "public object" 方法中使用 if 时遇到问题,这是我的代码:
public object Login([FromBody] MailParameters data)
{
UmbracoDatabase db = ApplicationContext.DatabaseContext.Database;
var select = new Sql("SELECT UserID FROM Users where Email='" + data.Email + "';");
var ids = db.Fetch<listUsersChecks>(select);
if (ids)
{
var getByEncrypt = new Sql("SELECT * FROM Users where Email='" + data.Email + "' AND password='" + data.Password + "';");
var listue = db.Fetch<listUsers>(getByEncrypt);
}else{
var listue = "";
}
return listue;
}
输出是:
error CS0029: Cannot implicitly convert type 'System.Collections.Generic.List<LoginController.listUsersChecks>' to 'bool'
错误在if(ids){
,如何解决?
谢谢
查看错误消息,if
语句需要布尔值,但您输入的是列表。在这种情况下,您的 ids
是一个列表 List<LoginController.listUsersChecks>
由于是列表,您可以通过计算列表中的项目数来查看:
if(ids.Count >0){} else{}
var ids = db.Fetch<listUsersChecks>(select);
这会给你一个 List<listUsersChecks>
和一个 if
条件需要一个 bool
来评估它是否应该被执行。
如果你想在列表中有条目时执行 if
语句,你应该使用
if(ids.Count > 0)
{
//logic
}
Count
是 List
的 属性 并给出列表中的项目数。
为了更清楚你也可以这样写。
bool hasItems = ids.Count > 0;
if(hasItems)
{
//logic
}
您也可以使用 LINQ 的 Any
方法。
Determines whether any element of a sequence exists or satisfies a condition.
看起来像
if(ids.Any())
{
//logic
}
有关详细信息,请查看 101 LINQ-Samples
并非所有代码路径 return 一个值。你必须在 if 语句之前定义你的 return 对象,并且在每个分支中只设置 it.and 至于 ids,它本身不是一个有效的布尔表达式,你可以尝试 ids.Any()
您似乎希望 C# 支持 "truthy" 和 "falsey" 值,例如 Javascript。在C#中,没有"truthy"或"falsey"的概念。 if
中的表达式必须计算为布尔值 true
或 false
。你真正想要做的是使用像这样的 Linq 表达式:
if(ids.Any())
{
...
}