【问题标题】:Custom string in linq to entity select newlinq中的自定义字符串到实体选择新
【发布时间】:2016-10-12 09:27:56
【问题描述】:

有什么方法可以自定义吗?

这就是我想要做的:

string customSelect = "c.person_name";
int per = PersonID();
var RetrievItem = (from c in db.person where c.person_id == per select new { customSelect }).FirstOrDefault();

我尝试调试它,但它只是从数据库中检索给定的字符串而不是值

有什么建议@_@吗?

【问题讨论】:

  • 为什么不select new { c.person_name}
  • @Mostafiz 因为该字符串是动态出现的,并且每次都会有所不同@_ @
  • 你试过 c.customSelect 了吗?
  • @gayan1991 是的,它说我的 db 模型不包含 fk 的定义

标签: c# sql-server entity-framework linq model-view-controller


【解决方案1】:

除了哈姆雷特关于基于表达式的解决方案的评论之外,您还可以查看Dynamic Linq 库。它支持定义为字符串的lamba表达式,这正是您所需要的。

【讨论】:

  • 我宁愿说这是迄今为止唯一可能的动态选择解决方案,因为您无法在运行时创建匿名类型,Dynamic LINQ 通过在运行时创建动态类来解决此问题。 +1
  • @IvanStoev,不可以在运行时创建动态类型
  • @AdilMammadov 这是可能的,但很难。而不是 anonymous 类型,它是编译器功能。
  • @IvanStoev,我同意这很难,尤其是当您添加 properties 而不是 fields (link) 时:)。
  • @AdilMammadov 是的 :) 动态 LINQ 有一个方便的 DynamicExpression.CreateClass() 方法可以完成所有这些工作,并且还可以正确实现 EqualsGetHashCode 以及缓存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多