C# 如何在公共对象C asp.net中使用if
我是新使用C的人,在公共对象方法中使用if时遇到问题,我的代码如下:C# 如何在公共对象C asp.net中使用if,c#,asp.net,api,umbraco,C#,Asp.net,Api,Umbraco,我是新使用C的人,在公共对象方法中使用if时遇到问题,我的代码如下: public object Login([FromBody] MailParameters data) { UmbracoDatabase db = ApplicationContext.DatabaseContext.Database; var select = new Sql("SELECT UserID FROM Users where Email='" + data.Email
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'
错误在ifids{中,如何解决此问题
谢谢查看错误消息,if语句需要一个布尔值,但您输入了一个列表。在本例中,您的ID是一个列表 由于它是一个列表,您可以通过计算此列表中的项目数进行检查:
ifids.Count>0{}else{}查看错误消息,if语句需要一个布尔值,但您输入了一个列表。在本例中,您的ID是一个列表 由于它是一个列表,您可以通过计算此列表中的项目数进行检查: ifids.Count>0{}else{} Count是List的一个属性,给出列表中的项目数 为了让它更清楚,你也可以写这个
bool hasItems = ids.Count > 0;
if(hasItems)
{
//logic
}
您也可以使用LINQ的任何方法
确定序列的任何元素是否存在或满足
条件
那看起来像
if(ids.Any())
{
//logic
}
有关更多信息,请查看
Count是List的一个属性,给出列表中的项目数
为了让它更清楚,你也可以写这个
bool hasItems = ids.Count > 0;
if(hasItems)
{
//logic
}
您也可以使用LINQ的任何方法
确定序列的任何元素是否存在或满足
条件
那看起来像
if(ids.Any())
{
//logic
}
有关详细信息,请查看并非所有代码路径都返回值。您必须在if语句之前定义返回对象,并在每个分支中设置它。至于ID,它本身不是有效的布尔表达式,您可以尝试使用ID。任何并非所有代码路径都返回值。您必须定义返回对象ct在if语句之前和每个分支内部只需设置它。至于ID,它本身不是一个有效的布尔表达式,您可以尝试ids。任何看起来您都希望C像Javascript一样支持真值和假值。在C中,没有真值或假值的概念。if中的表达式必须计算为布尔真值或f你真正想做的是使用类似Linq表达式的东西:
if(ids.Any())
{
...
}
看起来您希望C支持类似Javascript的truthy和falsey值。在C中,没有truthy或falsey的概念。if中的表达式必须计算为布尔值true或false。您真正想要做的是使用类似以下Linq表达式的内容:
if(ids.Any())
{
...
}
如果ids应该检查什么?如果有任何元素?此代码不应在生产中使用。它易受攻击。@Knelis感谢您的建议。。如果ids应该检查什么?如果有任何元素?此代码不应在生产中使用。它易受攻击。@Knelis感谢您的建议。.ids.any也将是一个可能的攻击bilityids.Any也是一个可能的方式..我尝试使用像==和!=这样的运算符,但不起作用..而且我不知道这些ID是否可以使用count..谢谢帮助。@RiskiFebriansyah熟悉类型,因为C是强类型:我个人不喜欢使用var来声明变量类型。是的,它的排序器,但我喜欢乍一看数据类型。如果您是c新手,我建议您在习惯该语言之前不要使用var。如果您声明了List ids=db.Fetchselect;则会更容易检测,因为List不是布尔变量。哇..我尝试使用==和!=之类的运算符,但不起作用..我不知道ids是否可以使用count..谢谢帮助。@RiskiFebriansyah熟悉类型,因为C是强类型:就我个人而言,我不喜欢使用var来声明变量类型。是的,它的分类器,但我喜欢第一眼看到数据类型。如果你是C新手,我建议在你习惯该语言之前不要使用var。如果你声明了List ids=db.Fetchselect;这会更容易检测,因为列表不是布尔变量。