【问题标题】:Guid compare not working on linq where conditionGuid 比较不适用于 linq where 条件
【发布时间】:2017-11-05 05:41:14
【问题描述】:

这里我传递了一个名为 PId 的参数。这将与另一个表的 PId 进行比较。但是当查询将查询绑定到 ToList() 时出现错误。

错误:“LINQ to Entities 不支持指定的类型成员 'PId'。仅支持初始化程序、实体成员和实体导航属性。”

 public IList<Models.MyModel> GetDaraByPId(Guid PId)
            {
                var query = this._Repository.GetIQueryable();
                var list = query.Select(a => new Models.MyModel
                {
                    MyModelId = a.Id,
                    MyModelName = a.Name
                }).Where(f => f.PId == PId);
                return list.ToList();
            }

【问题讨论】:

  • var 列表返回什么...
  • 无条件返回 var 列表。

标签: entity-framework linq


【解决方案1】:

你必须有一个'PId'的值(PId=a.PId),然后你才能在一个条件下使用它(Where(f => f.PId == PId))。

public IList<Models.MyModel> GetDaraByPId(Guid PId)
                {
                    var query = this._Repository.GetIQueryable();
                    var list = query.Select(a => new Models.MyModel
                    {
                        MyModelId = a.Id,
                        MyModelName = a.Name,
                        PId=a.PId
                    }).Where(f => f.PId == PId);
                    return list.ToList();
                }

【讨论】:

  • 需要解释一下
  • 感谢@durlove 现在可以使用了。我只是错过了选择查询中的 PId。
【解决方案2】:

我也遇到过这个问题。解决方案是,当你创建一个带有任何参数条件的模型构造函数时,模型必须包含用于比较的属性。在这里,您错过了模型的“PId”属性。

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2020-10-05
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 2014-10-11
    • 2022-01-05
    相关资源
    最近更新 更多