这是我当前的LINQ查询:
var model =
db.RPTINQUIRies
.Where(t => t.CONNAME.StartsWith(term))
.Take(25)
.Select(t => new
{
label = t.CONNAME
}).Distinct();
CONNAME是指联系人姓名,例如" Andy Smith"。我选择的是不同的,因为可能有100行" Andy Smith"英寸
让我们说一些不同的名字如下:
如果我通过了这个术语" Andy"进入查询我希望看到上面的列表,但它不会生成所有这些。它可能会产生安迪史密斯,安迪博格斯和失踪的安迪道斯和安迪萨顿。如果我通过术语" Andy Su"它会像预期的那样展示Andy Sutton。
任何人都可以解释为什么会这样吗?
答案 0 :(得分:8)
尝试移动Take(25)
var model =
db.RPTINQUIRies
.Where(t => t.CONNAME.StartsWith(term))
.Select(t => new
{
label = t.CONNAME
})
.Distinct()
.Take(25); // Move it HERE!
您需要25个不同的名称,而不是SQL在数据库中找到的前25个名称的不同名称: - )
说清楚:假设你有一个Take(2)
:
您对db ...
的所有行的查询Andy Smith
Andy Smith
Andy Bloggs
Andy Dawes
然后你Take(2)
......
Andy Smith
Andy Smith
并申请Distinct()
...
Andy Smith
但实际上你想要:
获取db
的所有行Andy Smith
Andy Smith
Andy Bloggs
Andy Dawes
申请Distinct()
Andy Smith
Andy Bloggs
Andy Dawes
然后Take(2)
Andy Smith
Andy Bloggs