1

我一直在努力寻找我正在解决的这个任务问题的答案,尽管早上没有在这里搜索。我已经研究了 MIN/MAX 子句,但似乎无法正确适应我的场景。

我正在执行这个简单的 LINQ 查询,在其中搜索列匹配的所有行

using (DataClasses2DataContext db = new DataClasses2DataContext())
        {
            var routes = (

                          from txcalllines in db.TxcAllLines
                          where
                              txcalllines.LineName == searchString
                          select txcalllines);

            return routes.ToList();
        }

这将返回以下结果:

FILE                           LINE   START               FINISH
output_txc_45486m.xml           486   North Station       Friswell Place
SVRAYAO486-20121008-22264.xml   486   Dunoon              Inveraray
SVRAYAO486-20121008-22265.xml   486   Dunoon              Inveraray
SVRAYAO486-20121008-22266.xml   486   Dunoon              Inveraray
SVRGMB04860-20120103-5774.xml   486   BURY                RADCLIFFE
SVRGMB04860-20120103-5775.xml   486   BURY                RADCLIFFE
SVRYNAO486-20120217-44588.xml   486   Selby Bus Stn       Pollington Circular

问题是,运行这个查询会返回几行相同的路由(你可以看到 LINE、START 和 FINISH 是一样的),我只想返回每个路由的第一个匹配行。

所以想要的结果是:

FILE                           LINE   START               FINISH
output_txc_45486m.xml           486   North Station       Friswell Place
SVRAYAO486-20121008-22264.xml   486   Dunoon              Inveraray
SVRGMB04860-20120103-5774.xml   486   BURY                RADCLIFFE
SVRYNAO486-20120217-44588.xml   486   Selby Bus Stn       Pollington Circular
4

2 回答 2

1

您可以使用GroupBythen 获取每个组的第一个元素。

var routes = (from txcalllines in db.TxcAllLines
              where txcalllines.LineName == searchString
              group txcalllines by new { txcalllines.Start, txcalllines.Finish } into g  // Groups the txcalllines by the pair (Start, Finish)
              select g.First());  // Gets the first intem of the group
于 2013-02-02T13:44:37.353 回答
0

我误解了这个问题,我道歉......也许这可能会有所帮助? https://stackoverflow.com/a/706903/1380061

于 2013-02-02T13:46:08.037 回答