我正在尝试使用EntityFramework实现全文搜索。
我的数据库有一个名为Users的表和一个名为UserInfoEntries的表。表用户连接到其他一些表,UserInfoEntries表包含用户信息。
当我想获取用户信息时,我会查看User.UserInfoEntries
中的条目并获取具有最早输入时间戳的条目。
我想用作全文搜索的键的属性是UserInfoEntry中的FullName属性。
用于获取具有确切FullName的用户的LINQ如下所示:
from user in objectContext.Users
let currentInfoEntry =
(from entry in user.UserInfoEntries
orderby entry.EntryTimestamp descending
select entry
).FirstOrDefault()
where currentInfoEntry.FullName == "Some Name"
select new UserWithInfo
{
User = user,
Info = currentInfoEntry
}
我想使用FullName的全文搜索。有没有比将查询转换为SQL更简单的方法?
答案 0 :(得分:0)
这不是全文搜索。完全匹配只是一次普通搜索。您可以通过还原来简化查询:
var query = from x in objectContext.UserInfoEntries.Include("User")
where x.FullName == "Some Name"
orderby x.EntryTimestamp descending
select x;
UserInfoEntry entry = query.FirstOrDefault();
User user = entry.User;
此查询要求您的UserInfoEntry
实体具有名为User
的导航属性,指向User
实体。