如何在linq查询中使用split?

时间:2013-12-23 20:50:55

标签: linq asp.net-web-api

我正在尝试调用以下查询字符串,但我在客户端收到“无数据”消息 - 'api / data?id = 786,899& price_type = cvr'。

public HttpResponseMessage Get([FromUri] Query query)
{
    var data = db.database_ICs.AsQueryable();

    if (query.id!= null)
    {
        data = data.Where(c => query.id.Split(',').Contains(c.ID));
    }
    if (query.price_type != null)
    {
        data = data.Where(c => c.Cover == query.price_type);
    }

    if (!data.Any())
    {
        var message = string.Format("No data was found");
        return Request.CreateErrorResponse(HttpStatusCode.NotFound, message);
    }

    return Request.CreateResponse(HttpStatusCode.OK, data);
}

public class Query
{
    public string id{ get; set; }
    public string price_type { get; set; }
    public Nullable<DateTime> startDate { get; set; }
    public Nullable<DateTime> endDate{ get; set; }
}

非常感谢任何帮助。 非常感谢。

1 个答案:

答案 0 :(得分:0)

    var data = db.database_ICs.AsQueryable();
    if (!string.IsNullOrEmpty(query.id))
        {
             var ids = query.id.Split(',').ToList();
             data = data.Where(c => ids.Contains(c.ID));
        }

假设c.ID和ids元素当然属于同一类型。 编辑:检查是否有查询字符串的一种方法