如何使用'任何'在AsQueryable方法?

时间:2014-03-17 12:31:35

标签: c# asp.net-mvc linq linq-to-sql asp.net-web-api

我试图让我的查询输出所有数据,如果给出任何参数' name'和'价格'或仅限名称。我尝试使用' Any'参数,但它给了我 - 不能隐式转换类型' bool'到 - 错误。

我之前使用的是#FirstDerfault'但那只输出了第一个记录细节。

他们可以使用或调查他们的另一个功能吗?

用户类:

  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);
       // }
    }

非常感谢您的时间和帮助。

5 个答案:

答案 0 :(得分:5)

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

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

  • return data.Any();更改为return data;
  • 将方法的返回类型从database_ab更改为IEnumerable<database_ab>

答案 1 :(得分:1)

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

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;
    }

答案 2 :(得分:0)

Any扩展方法的返回类型是bool类型;如果集合中的某些项目符合某些给定标准,则返回true。语法上正确的是返回data而不是data.Any();也许这已经解决了这个问题。

答案 3 :(得分:0)

您应该进行两项更改:首先更改返回类型

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

//you are going to return many elements
public IEnumerable<database_ab> getData(Query query)

因此只返回您的data对象

return data;
}

方法.Any()表示&#34; 集合中的任何项是否满足此条件?&#34;,如

var Coll = new List<int> { 1, 2, 3, 4 };
// is any element of Coll greater than 2 ?
var myCondition = Coll.Any(element => element > 2);

答案 4 :(得分:0)

return data.Any();没有任何意义。

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

eg: data = data.Any(c => c.Name == query.name); 

根据条件的结果返回布尔值。

如果您想要返回所有数据,请执行

return data;

return data.Tolist();  // if you want the result in list.