Linq查询日期错误。 [英] Linq query date error.

查看:86
本文介绍了Linq查询日期错误。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前在以下where子句代码中的date属性上收到一个编译错误:



错误

  string  ' 不包含' UploadDate ' 的定义,并且没有扩展名方法' UploadDate ' 接受类型'  string  ' (您是否缺少using指令或程序集引用?) 





  public  HttpResponseMessage获取(日期时间?日期)
{
如果(User.IsInRole( admin))
{
// IEnumerable< data_qy> data_queries;

DateTime昨天= DateTime.Today.AddBusinessDays(-4);

var query =( from c in db.data_qy
其中​​ c.UploadDate ==昨天&&
c.Cover == perst
选择(c .Name))。OrderByDescending(a = > a。 UploadDate )。Distinct();

var data = query.ToList();

if (!data.Any())
{
var message = string .Format( 没有找到数据);
return Request.CreateErrorResponse(HttpStatusCode.NotFound,message);

}



我正在尝试查询数据,其中name属性仅与where子句过滤器一起显示。



任何指南都非常感谢。

谢谢

解决方案

  var 查询=( from  c  in  db.data_qy 
其中 c.UploadDate ==昨天&& c.Cover == perst
选择(c.Name))。OrderByDescending(a = > a.UploadDate ).Distinct();





在这里,您选择 c.Name 因此你的 a 不再是 data_qy 类型,它变成字符串



试试这个:

  var  query =( from  c  in  db.data_qy 
其中 c.UploadDate ==昨天&& c.Cover == perst
选择(c))。OrderByDescending(a = > a.UploadDate) .Distinct();





即不选择 c.Name ,选择 c ,它应该可以工作。



编辑:



另外,我发现你只需要不同的名称 s,所以你可以得到它们:

  var  query =( from  c  in  db.data_qy 
其中 c.UploadDate ==昨天&& c.Cover == perst
选择(c))。OrderByDescending(a = > a.UploadDate)
。选择(a = > a.Name).Distinct();


因此您的'UploadDate'属性为null-able,你必须使用 c.UploadDate.Value



  var  query =(来自 c   db.data_qy 
其中​​ c.UploadDate.Value ==昨天&&
c.Cover == perst
选择(c))。OrderByDescending(a = > a.UploadDate.Value).Distinct( );


I am currently getting a an compiling error on the date property in the where clause code below:

error:

string' does not contain a definition for 'UploadDate' and no extension method 'UploadDate' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)



public HttpResponseMessage Get(DateTime? date)
       {
           if (User.IsInRole("admin"))
          {
              //IEnumerable<data_qy> data_queries;

               DateTime yesterday = DateTime.Today.AddBusinessDays(-4);

               var query = (from c in db.data_qy
                           where c.UploadDate == yesterday &&
                                 c.Cover == "prest"
                           select (c.Name)).OrderByDescending(a => a.UploadDate).Distinct();

               var data = query.ToList();

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

              }


I am trying to query data, where the name property is only displayed distinctly with the where clause filters.

Any guide would be very much appreciated.
Thanks

解决方案

var query = (from c in db.data_qy
           where c.UploadDate == yesterday && c.Cover == "prest"
           select (c.Name)).OrderByDescending(a => a.UploadDate).Distinct();



Here, you are selecting c.Name and hence your a is no longer of type data_qy, it becomes a string.

Try this:

var query = (from c in db.data_qy
           where c.UploadDate == yesterday && c.Cover == "prest"
           select (c)).OrderByDescending(a => a.UploadDate).Distinct();



i.e. instead of selecting c.Name, select c, it should work.

EDIT:

Also, I see that you need only distinct Names, so you can get them as:

var query = (from c in db.data_qy
           where c.UploadDate == yesterday && c.Cover == "prest"
           select (c)).OrderByDescending(a => a.UploadDate)
           .Select(a => a.Name).Distinct();


Hence your 'UploadDate' property is null-able, you have to use c.UploadDate.Value.

var query = (from c in db.data_qy
                          where c.UploadDate.Value == yesterday &&
                                c.Cover == "prest"
                          select (c)).OrderByDescending(a => a.UploadDate.Value).Distinct();


这篇关于Linq查询日期错误。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆