实体框架查询选择硬编码用户创建的列

时间:2014-11-26 01:28:40

标签: linq entity-framework linq-to-entities

我正在使用union从多个表创建一个select,因为我需要返回数据库中特定客户端发生的活动列表。我需要使用添加的列返回每个联合,以便我可以区分结果。如果我在SQL中进行查询,它看起来像这样:

SELECT cn.NoteID,cn.Note,cn.InsertedDate,'Note Added'Notes

FROM Client c

INNER JOIN ClientNotes cn ON cn.ClientID = c.ID

WHERE c.ClientID = @ClientID

UNION

SELECT rc.ID,rc.CommNote,rc.InsertedDate,'Communication Added'备注

FROM ReceivedCommunication rc

LEFT JOIN Job j ON j.ID = rc.JobID

WHERE j.ClientID = @ClientID或rc.ClientID = @ClientID

我的问题如何在使用IQuerable的实体框架中返回硬编码的Notes列? 到目前为止我有这样的事情:

Dim client as IQueryable(Of myresultclass)= (来自c As Client

在ClientCompanyNotes中加入cn As ClientNotes在c.ID上等于cn.ClientID

其中c.ClientID = ClientID

选择cn.NoteID,cn.Note,cn.InsertedDate).Union(

来自已接收通信中的已接收通信

在j.ID Equals rc.JobID

上加入j作为作业

其中j.ClientID = ClientID或rc.ClientID = ClientID

选择rc.ID,rc.CommNote,rc.InsertedDate)

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

好的解决了,本来应该是显而易见的。对于任何有同样问题的人,我必须将我的Select从Select cn.NoteID,cn.Note,cn.InsertedDate更新为:

Select New myresultclass With {
    .ActivityID = cn.NoteID,
    .ActivityType = "Note Added"
    .InsertedDate = cn.InsertedDate
}

我所拥有的每一个工会

由于