这是我当前的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 Smith,Andy Bloggs,并且会丢失Andy Dawes和Andy Sutton。如果我通过“ Andy Su”一词,它将按预期显示Andy Sutton。
谁能阐明为什么会这样吗?
最佳答案
尝试移动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)
:您查询数据库的所有行...
Andy Smith
Andy Smith
Andy Bloggs
Andy Dawes
然后你
Take(2)
...Andy Smith
Andy Smith
并应用
Distinct()
...Andy Smith
但实际上您想要:
占用数据库的所有行
Andy Smith
Andy Smith
Andy Bloggs
Andy Dawes
申请
Distinct()
Andy Smith
Andy Bloggs
Andy Dawes
然后
Take(2)
Andy Smith
Andy Bloggs
关于c# - C#中使用LINQ查询的奇怪结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29097806/