none
Entity Framework中获取列名 RRS feed

  • 问题

  • 我想问一下能不能动态确定要选择的列名:像在sql语句一样

    select col1,col2,col3....from table;

    在entity framework中该 怎么写呢?(列名由c#代码动态指定)

    还有就是如果通过一次查询获取到了一个结果  

    如:var query=entities.Table1;

    那么,我如何确认这个query中有哪些列呢?

    有没有像DataTable中类似的  Column的枚举呢?

    谢谢


    dqjk

    2012年2月27日 16:02

答案

  • 您好,你可以尝试用动态Linq去构造Linq语句,可以参考一下下面链接,网上还有很多相关文章可以参阅一下。

    http://www.cnblogs.com/bitstudio/archive/2009/03/04/1402652.html

    希望对您有帮助。


    Allen Li [MSFT]
    MSDN Community Support | Feedback to us

    2012年2月29日 2:14
    版主
  • 		/// <summary>
    		/// 获得一个类中指定的属性的名称
    		/// </summary>
    		/// <typeparam name="T">类</typeparam>
    		/// <param name="expr">表达式</param>
    		/// <returns>返回属性的名称</returns>
    		public static string GetPropName<T>(Expression<Func<T, object>> expr)
    		{
    			switch (expr.Body.NodeType) {
    				case ExpressionType.MemberAccess:
    					Regex regex = new Regex(@"^[^\.]+\.(?<value>.+$)");
    					var bodyStr = ((MemberExpression)expr.Body).ToString();
    					return regex.Match(bodyStr).Groups["value"].Value;
    				case ExpressionType.Convert:
    					return ((MemberExpression)((UnaryExpression)expr.Body).Operand).Member.Name;
    				default:
    					return null;
    			}
    		}

    2012年3月2日 5:07

全部回复

  • 您好,你可以尝试用动态Linq去构造Linq语句,可以参考一下下面链接,网上还有很多相关文章可以参阅一下。

    http://www.cnblogs.com/bitstudio/archive/2009/03/04/1402652.html

    希望对您有帮助。


    Allen Li [MSFT]
    MSDN Community Support | Feedback to us

    2012年2月29日 2:14
    版主
  • 		/// <summary>
    		/// 获得一个类中指定的属性的名称
    		/// </summary>
    		/// <typeparam name="T">类</typeparam>
    		/// <param name="expr">表达式</param>
    		/// <returns>返回属性的名称</returns>
    		public static string GetPropName<T>(Expression<Func<T, object>> expr)
    		{
    			switch (expr.Body.NodeType) {
    				case ExpressionType.MemberAccess:
    					Regex regex = new Regex(@"^[^\.]+\.(?<value>.+$)");
    					var bodyStr = ((MemberExpression)expr.Body).ToString();
    					return regex.Match(bodyStr).Groups["value"].Value;
    				case ExpressionType.Convert:
    					return ((MemberExpression)((UnaryExpression)expr.Body).Operand).Member.Name;
    				default:
    					return null;
    			}
    		}

    2012年3月2日 5:07