C# 如何使用';任何';用可询问的方法?
如果给定任何参数“name”和“price”或“name”,我试图让我的查询输出所有数据。我尝试使用'Any'参数,但它给我--Cannot隐式地将类型'bool'转换为--error 我以前使用的是“FirstOrDefault”,但那只是输出第一条记录的详细信息 它们是我可以使用或研究的另一个功能吗 用户类别: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
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.