Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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 Mvc_Linq_Linq To Sql_Asp.net Web Api - Fatal编程技术网

C# 如何使用';任何';用可询问的方法?

C# 如何使用';任何';用可询问的方法?,c#,asp.net-mvc,linq,linq-to-sql,asp.net-web-api,C#,Asp.net Mvc,Linq,Linq To Sql,Asp.net Web Api,如果给定任何参数“name”和“price”或“name”,我试图让我的查询输出所有数据。我尝试使用'Any'参数,但它给我--Cannot隐式地将类型'bool'转换为--error 我以前使用的是“FirstOrDefault”,但那只是输出第一条记录的详细信息 它们是我可以使用或研究的另一个功能吗 用户类别: public database_ab getData(Query query) { var data = db.database_ab.AsQuerya

如果给定任何参数“name”和“price”或“name”,我试图让我的查询输出所有数据。我尝试使用'Any'参数,但它给我--Cannot隐式地将类型'bool'转换为--error

我以前使用的是“FirstOrDefault”,但那只是输出第一条记录的详细信息

它们是我可以使用或研究的另一个功能吗

用户类别:

  public database_ab getData(Query query)
    {

        var data = db.database_ab.AsQueryable();

        if (query.name != null)
        {
            data = data.Where(c => c.Name == query.name);
        }

        if (query.price != null)
        {
            data = data.Where(c => c.Price == query.price);
        }

        return data.Any();
    }
项目控制员:

public HttpResponseMessage getData([FromUri] Query query)
    {
        User layer = new User();
       // if (User.IsInRole("user"))
       // {
            var result = layer.getData(query);
            if (result == null)
            {
                // return HttpResponseMessage
                var message = string.Format("No data was found");
                return Request.CreateErrorResponse(HttpStatusCode.NotFound, message);
            }
            return Request.CreateResponse(HttpStatusCode.OK, result);
       // }
    }
非常感谢您的时间和帮助。

调用
.Any()
返回一个布尔值,指示是否找到任何记录

如果要返回实际记录,请尝试以下操作:

  • 更改
    返回数据.Any()
    返回数据
  • 将方法上的返回类型从
    database\u ab
    更改为
    IEnumerable

您只需返回数据变量对象,即

public IEnumerable<database_ab> getData(Query query)
    {

        var data = db.database_ab.AsQueryable();

        if (query.name != null)
        {
            data = data.Where(c => c.Name == query.name);
        }

        if (query.price != null)
        {
            data = data.Where(c => c.Price == query.price);
        }

        return data;
    }
公共IEnumerable getData(查询) { var data=db.database_ab.AsQueryable(); if(query.name!=null) { data=data.Where(c=>c.Name==query.Name); } if(query.price!=null) { data=data.Where(c=>c.Price==query.Price); } 返回数据; }
任何扩展方法的返回类型都是bool类型;如果集合的某些项与给定的条件匹配,则返回true。语法正确的做法是只返回
数据
,而不是
数据。Any()
;也许这已经解决了问题。

您应该做两个更改:首先更改返回类型

//you are returning a single element
public database_ab getData(Query query)

方法
.Any()
表示“集合中的任何项是否满足此条件?”,如中所示

var Coll=新列表{1,2,3,4};
//Coll的任何元素是否大于2?
var myCondition=Coll.Any(元素=>元素>2);
返回数据.Any()没有任何意义

Any()
根据您的条件返回布尔值

eg: data = data.Any(c => c.Name == query.name); 
根据条件的结果返回布尔值

eg: data = data.Any(c => c.Name == query.name); 
如果要返回所有数据,只需执行以下操作

return data;


非常感谢您的回复和帮助。我以前尝试过使用IEnumerable方法类型,但是我无法搜索两个值,例如api/item?name=key&price=23,它会输出一个空白页。我是否需要修改项目控制器中的某些内容。非常感谢您的帮助非常感谢您的回复和帮助。我以前尝试过使用IEnumerable方法类型,但是我无法搜索两个值,例如api/item?name=key&price=23,它会输出一个空白页。我是否需要修改项目控制器中的某些内容。非常感谢您的帮助嗨,我也尝试了列表,但我仍然遇到同样的问题。
eg: data = data.Any(c => c.Name == query.name); 
return data;
return data.Tolist();  // if you want the result in list.