Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在公共对象C asp.net中使用if_C#_Asp.net_Api_Umbraco - Fatal编程技术网

C# 如何在公共对象C asp.net中使用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

我是新使用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 + "';");
        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;这会更容易检测,因为列表不是布尔变量。