Linq查询显示当前数据集的唯一名称集

时间:2016-08-25 17:51:40

标签: vb.net linq

我有一个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()

在下拉列表中需要不同的用户

2 个答案:

答案 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()