我得到了以下代码,并且始终遇到相同的错误,但是我无法找出为什么可以像在第一级(所有函数)中那样比较复杂的对象,但是在Any函数中却给了我以下错误。

无法创建类型为'ConsoleApplication1.Param'的常量值。在这种情况下,仅支持基本类型(例如Int32,String和Guid)

这是代码

  Dim listParams As List(Of Param) = Nothing

  listParams = New List(Of Param)(2)

  Dim new_param as Param

  new_param = new Param()
  new_param.Name = "p1"
  new_param.Value = "a"
  listParams.Add(new_param)

  new_param = new Param()
  new_param.Name = "p2"
  new_param.Value = "231"
  listParams.Add(new_param)

  Dim aux As IQueryable(Of Part)

  aux = From p In CurrentBD.Parts
        Where p.code = find_pattern _
          And p.version = find_version _
          And p.Params.Count = listParams.Count _
          And p.Params.All(Function(p1 As Parametro) listParams.Any(Function(p2) p2.Name = p1.Name AndAlso (p2.Value = p1.Value OrElse p1.Value = "IRRELEVANT")) )
        Select p

  Dim hist_part as Part
  hist_part = aux.FirstOrDefault()

查询的重点是获取属于模式的所有已注册零件,但是零件的参数值和名称都与列表中的一次匹配

难道我做错了什么?显然我是什么???

预先感谢任何可以帮助我或提供线索的人。

最佳答案

错误在这里:

p.Params.All(Function(p1 As Parametro) listParams.Any(Function(p2) ...

09-10 19:44