尝试获取此LINQ查询中每个MemID的第一条记录

时间:2014-06-24 16:14:34

标签: c# sql-server linq

我有一个LINQ查询,它正在运行,如下所示。唯一的问题是有时我会重复MEMIds。 如何在单个数据库旅行中只获得此查询中的第一个MemID 我使用SQL Server 2008 R2作为我的后端数据库,使用C#作为编程语言。

var query = (from m in e.Memberships
             where m.MEMID != null 
                  && (SqlFunctions.StringConvert((double)m.MEMID).Contains(memIdOrName) 
                        || m.NAME.Contains(memIdOrName))  
             select new { 
                             m.MEMID, 
                             NAME = m.NAME.TrimEnd(), 
                             m.CITY, 
                             m.STATE, 
                             m.SYSTEMID, 
                             SYSTEMNAME = m.SYSTEMNAME.TrimEnd() 
                        })
                        .Distinct()
                        .OrderBy(s => s.NAME)
                        .ThenBy(s => s.CompanyID)
                        .ThenBy(s => s.CITY)
                        .ThenBy(s => s.MEMID);

var a = query.Skip(startRowIndex).Take(maximumRows).ToList();

1 个答案:

答案 0 :(得分:1)

对该值进行分组,然后从该组中仅选择一个项目。如果你不关心哪一个,你可以抓住第一个。如果你想要一个特定的,那么你可以在取得第一个项目之前重新订购它们。

所以用{;

替换Distinct
//everything before `Distinct`
.GroupBy(s => s.MEMID)
.Select(group => group.FirstOrDefault())//or some other query to get one item in the group
//rest of your query