2017-04-10 53 views
0

自从我使用实体框架和LINQ以来已经有一段时间了。我正在尝试执行SQL查询。这可以在通过父表中的外键定义的一对多关系中正常工作。LINQ包含没有创建一个类似的声明

myEntity.Where(me => me.relatedEntity.Name.Contains("a"); 

这正确地转换为SQL中的一样。但是,当我通过联结表查询多对多关系时,它会在SQL中创建一个equals语句。

var name = "bo"; 
myEntity.Where(me => me.Users.Select(u => u.Name).Contains(name)); 

我是否缺少明显的东西?

感谢

+0

你正在检查的第二个版本,如果名称集合中的任何实体“包含”的确是相同的名称。你应该使用'me.Users.Any(u => u.Name.Contains(name))' –

回答

1

这是正确的,在你第一次查询的源是一个字符串,第二个来源是字符串的集合。我知道你在寻找的是这样的:

var r=myEntity.Where(me => me.Users.Any(u => u.Name.Contains(name))); 

如果你想为条件,即所有用户包含一些字符串模式,然后使用All扩展方法,而不是Any

+0

Thankyou,它已经有一段时间了 – DavidB

+0

不客气,很高兴我可以帮忙;) – octavioccl