【问题标题】:How to access property of generic type in linq expression如何在 linq 表达式中访问泛型类型的属性
【发布时间】:2010-10-28 12:33:39
【问题描述】:

我正在使用 .NET 3.5。我有 asp.net mvc 应用程序。有基础控制器:

public abstract class BackendController<TModel> : BaseController where TModel : class
{
 // skipped ...

 public ActionResult BatchDelete(int[] ids)
 {
    var entities = repository.GetList().Where(item => ids.Contains(item.ID));
    repository.delete(entities)

 }

 public ActionResult BatchHide(int[] ids)
 {
   var entities = repository.GetList().Where(item => ids.Contains(item.ID));  
   repository.BatchUpdate(
                        entities.Where(item => item.IsHidden == false),
                        c => new TModel { IsHidden = true }
                    );

 }

}

由于 item.ID 和 item.IsHidden,它不会编译 - 但在运行时这是具有某些属性的有效类型。这个怎么编译?

【问题讨论】:

    标签: linq-to-sql generics lambda


    【解决方案1】:

    嗯,你可以用一个接口来描述公共属性,给TModel添加一个约束:

    public interface IModel
    {
        int ID { get; }
        bool IsHidden { get; set; }
    }
    
    ...
    
    public abstract class BackendController<TModel> : BaseController
        where TModel : IModel, new()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      相关资源
      最近更新 更多