无法使用Linq编写Where子句,其中数据包含数组

时间:2014-01-24 16:03:25

标签: c# linq

我正在尝试在Linq中编写一个与日期匹配的where子句。 date的值包含在嵌套对象中。我的意思是包含日期的对象有两个元素开始和结束。我收到两条错误消息:

  1. 无法将System.Collections.Generic.IEnumerable转换为bool
  2. 无法将lambda表达式转换为委托类型System.Func,因为块中的某些返回类型不可隐式转换为委托返回类型
  3. 我的代码是:

     var locationName = from relocate in relocations where **relocate.Relocations.
          Where(c=>c.TimeIntervals.Select(d=>d.Start==sh.StartTime.Date))** 
            select relocate.Relocations.Select(a=>a.Path.Items.
                 Select(b=>b.DisplayString.Skip(4).SingleOrDefault()));  
    

    这是双**之间的位。

    请帮助!!!

3 个答案:

答案 0 :(得分:0)

您的relocate.Relocations.Where会返回IEnumerable。您需要将其与某些东西进行比较(相交),以便结果计算为布尔值。

也许是这样:

relocate.Relocations.Where(...).Any()

var locationName = from relocate in relocations where **relocate.Relocations.
      Where(c=>c.TimeIntervals.Select(d=>d.Start==sh.StartTime.Date).Any()).Any()** 
        select relocate.Relocations.Select(a=>a.Path.Items.
             Select(b=>b.DisplayString.Skip(4).SingleOrDefault()));

答案 1 :(得分:0)

我认为您只需在声明的末尾添加First()FirstOrDefault()

答案 2 :(得分:0)

日期和位置之间存在脱节 - 我设法通过使用字典类然后匹配日期来解决这个问题!