我一直在努力寻找我正在解决的这个任务问题的答案,尽管早上没有在这里搜索。 我查看了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
答案 0 :(得分:1)
您可以使用GroupBy
然后获取每个组的第一个元素。
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
答案 1 :(得分:0)
我误解了这个问题,我道歉......也许这可能有帮助吗? https://stackoverflow.com/a/706903/1380061