如何通过实体框架搜索对象及其子对象?

akn*_*ds1 1 .net c# linq-to-entities entity-framework

使用Entity Framework 4.3和Linq,我想将搜索字符串与包含对象的某些属性以及子对象的属性进行匹配.事实证明这是一个相当复杂的查询,我不知道该怎么做.例如,一个属性是一个整数,我不允许在Linq查询中调用.ToString().

为了让您了解我正在尝试做什么,请考虑以下示例代码:

var dbVersions = from ver in db.Versions 
                 where ver.Name.Contains(search) || 
                       ver.Children.Any(c=>c.Id.ToString().Contains(search)) 
                 select ver;
Run Code Online (Sandbox Code Playgroud)

我该如何实施此搜索?也许通过存储过程?

数据库服务器是SQL Server 2012.

Yag*_*dal 5

如果你想使用LINQ,框架内部将进行适当的优化,根据我的经验,结果是相当不错的.如果您不想使用存储过程并坚持使用LINQ,请将其全部保存在您的类代码中:

SqlFunctions.StringConvert((double)c.Id)
Run Code Online (Sandbox Code Playgroud)

用于将int转换为字符串.请注意,int没有重载,因此您需要将其转换为double或decimal.