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