【发布时间】:2011-06-08 02:56:24
【问题描述】:
您好,
我在 C# 4.0 中使用 LINQ 和 EF。 我已将基本的 ELMAH 表拖到 EF 中(多次构建和保存)。 一切正常。
但过于雄心勃勃,需要一点帮助 - 我试图从作为变量传入的表达式中获取列名。
我想要的是这个:
传入:x=>x.ErrorId
并得到:“ErrorId”
public void GetColumnName(Expression<Func<T, object>> property)
{
// The parameter passed in x=>x.Message
// Message works fine (probably because its a simple string) using:
string columnName = (property.Body as MemberExpression).Member.Name;
// But if I attempt to use the Guid or the date field then it
// is passed in as x => Convert(x.TimeUtc)
// As a result the above code generates a NullReference exception
// i.e. {"Object reference not set to an instance of an object."}
// What is the correct code here to extract the column name generically?
// Ideally in a way that won't bite me again in the future.
}
感谢您的帮助! 丹。
【问题讨论】:
-
所以您希望通过一个可能比
x.ColumnName更复杂的表达式来确定列名? -
尝试调试并将
property.Body as MemberExpression放入手表中,一旦您点击ErrorId,您可能会看到如何提取它 -
@oleksii 酷我去看看
标签: c# linq entity-framework linq-expressions