我有一个linq查询,用于显示来自多个用户的请求列表。并且请求者可以有多个请求(因此网格可以多次具有相同的请求者)。现在我正在创建一个下拉列表,其中包含显示在网格上的唯一Requestor。(问题是我没有得到不同的列表但是多次获取所有Requestor)。下面是linq查询我没有注意。任何人都建议使用正确的linq查询。
Dim rqstQry = From x In db.Request_vws _
Order By x.RequestID Descending _
Select x.RequestID,
Descr = x.Descr, _
RequestorName = String.Format("{0} {1}", x.FIRST_NAME, x.LAST_NAME), _
RelatedTask = GetTaskDescr(x.WorkID, x.TaskLabel, x.TaskDescr), _
RequestDescr = GetRequestDescr(x.RequestType), x.SubmitDttm, x.UpdatedDttm, _
x.ChangeDttm, _
x.MigrTimeStr, x.MigrApptTime, _
x.Requestor Ditinct
的DataBind:
RequestorCB1.DataSource = rqstQry
RequestorCB1.DataTextField = "Requestor" RequestorCB1.DataValueField = "REquestor"
RequestorCB1.DataBind()
在下拉列表中需要不同的用户
答案 0 :(得分:2)
在LINQ查询周围加上括号并附加.Distinct()
Dim rqstQry = (From x In db.Request_vws _
Order By x.user
Select x.user).Distinct()
如果您在结果中包含请求内容,则无法获得不同的用户(正如Gert Arnold在其评论中指出的那样)。仅包含与用户相关的列。
如果您仍需要有关请求的信息,则必须将此信息限制为每个用户一条记录。您将使用group by并使用聚合来选择请求(第一个,最后一个等)。
答案 1 :(得分:0)
通过使用以下查询获得此结果。
Dim rqstQry = (From x In db.Request_vws _
Order By x.RequestID Descending _
Select x.RequestID,
Descr = x.Descr, _
RequestorName = String.Format("{0} {1}", x.FIRST_NAME, x.LAST_NAME), _
RelatedTask = GetTaskDescr(x.WorkID, x.TaskLabel, x.TaskDescr), _
RequestDescr = GetRequestDescr(x.RequestType), x.SubmitDttm, x.UpdatedDttm, _
x.ChangeDttm, _
x.MigrTimeStr, x.MigrApptTime, _
x.Requestor). Distinct()
Dim rqstQry2 = (From y In rqstQry _
Select y.Requestor, y.RequestorName).Distinct()