之前我没有使用LINQ,需要对动态构建的数据表进行动态查询。我正在调查不同的选项,并想知道LINQ是否可以在无类型数据表上运行时模仿此SQL查询示例。根据用户选择的源和字段,数据表的结构是动态的。
LINQ可以这样做:
select CAST(EventID as varchar(8)) + '_' + CAST(UserID as varchar(8)) as UserEventRef
from tblEvent
我必须允许用户构建自己的查询,并允许他们按照自己的意愿进行计算和转换。
编辑:结果不能强类型。
答案 0 :(得分:1)
不确定
from t in tblEvent
select new { UserEventRef = EventID.ToString() + "_" + UserID.ToString() }
答案 1 :(得分:0)
肯定可以投,是的。但是,对于动态数据表上的动态查询,它不会非常有用,因为您没有要编码的C#类型。
答案 2 :(得分:0)
这应该有效。这是客户端转型。这意味着从db中查询EventId和UserId,并使用计算属性Summary
创建新的匿名类
var result = from e in Event
select new {
e.EventId,
e.UserId,
Summary = e.EventId.ToString("00000000") + "_" + e.UserID.ToString("00000000")
};
答案 3 :(得分:0)
我假设目的是使用强类型结果。您可以选择所需的任何列并将其转换或转换为您想要的任何类型,但我不确定您将如何创建动态用户定义类型。
此代码将执行您在上面显示的内容:
from e in tblEvent
select new
{
UserEventRef = String.Format("{0}_{1}", EventId.ToString(), UserId.ToString())
}
这将创建一个匿名类型,但它仍然在设计时定义,而不是在运行时定义。