【问题标题】:List<Diary_Entry> DiaryEntry cant convert to collections.generic.listList<Diary Entry> 日记条目无法转换为 collections.generic.list
【发布时间】:2013-02-23 19:12:01
【问题描述】:
List<Diary_Entry> DiaryEntry = new List<Diary_Entry>();

DiaryEntry = (from DE in db.Diary_Entries
    where DE.Site_Id == 1
    && DE.Date == tempDate
    select DE).ToList().FirstOrDefault();

错误:无法将类型Diary_Entry 隐式转换为System.Collections.Generic.List&lt;Diary_Entry&gt;

谁能告诉我如何解决这个问题?

【问题讨论】:

    标签: asp.net linq list


    【解决方案1】:

    您需要删除FirstOrDefault() 调用。这将返回一个实体,而您的 DiaryEntry 实例是一个列表。应该是这个(DiaryEntry 将是 List&lt;Diary_Entry&gt; 类型):

    var DiaryEntry = (from DE in db.Diary_Entries
                      where DE.Site_Id == 1
                      && DE.Date == tempDate
                      select DE).ToList();
    

    或者应该是这个(DiaryEntry 将是 Diary_Entry 类型):

    var DiaryEntry = (from DE in db.Diary_Entries
                      where DE.Site_Id == 1
                      && DE.Date == tempDate
                      select DE).ToList().FirstOrDefault();
    

    【讨论】:

      【解决方案2】:

      您的变量 DiaryEntry 是 List 类型,但您尝试将其设置为等于 Diary_Entry 类型的变量。你应该使用

      List<Diary_Entry> DiaryEntry = new List<Diary_Entry>();
      DiaryEntry = (from DE in db.Diary_Entries
                            where DE.Site_Id == 1
                            && DE.Date == tempDate
                            select DE).ToList();
      

      此查询返回 Diary_Entry 类型的值列表。如果你想获得 Diary_Entry 类型的单个值,你应该使用

       var DiaryEntry = (from DE in db.Diary_Entries
                                where DE.Site_Id == 1
                                && DE.Date == tempDate
                                select DE).FirstOrDefault();
      

      在这个查询中你不应该使用ToList()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-12
        • 1970-01-01
        • 2013-06-02
        相关资源
        最近更新 更多