LINQ 包含不创建类似语句
LINQ contains not creating a like statement
我已经有一段时间没有使用实体框架和 LINQ 了。我正在尝试执行类似 SQL 的查询。这在通过父 table.
中的外键定义的一对多关系中工作正常
myEntity.Where(me => me.relatedEntity.Name.Contains("a");
这正确地翻译成了 SQL 中的赞。但是,当我通过联结 table 查询多对多关系时,它会在 SQL.
中创建一个 equals 语句
var name = "bo";
myEntity.Where(me => me.Users.Select(u => u.Name).Contains(name));
我是不是遗漏了什么明显的东西?
谢谢
没错,在您的第一个查询中,源是一个字符串,而在第二个查询中,源是一个字符串集合。我想你要找的是这个:
var r=myEntity.Where(me => me.Users.Any(u => u.Name.Contains(name)));
如果您希望所有用户都包含一些字符串模式,则使用 All
扩展方法代替 Any
。
我已经有一段时间没有使用实体框架和 LINQ 了。我正在尝试执行类似 SQL 的查询。这在通过父 table.
中的外键定义的一对多关系中工作正常myEntity.Where(me => me.relatedEntity.Name.Contains("a");
这正确地翻译成了 SQL 中的赞。但是,当我通过联结 table 查询多对多关系时,它会在 SQL.
中创建一个 equals 语句var name = "bo";
myEntity.Where(me => me.Users.Select(u => u.Name).Contains(name));
我是不是遗漏了什么明显的东西?
谢谢
没错,在您的第一个查询中,源是一个字符串,而在第二个查询中,源是一个字符串集合。我想你要找的是这个:
var r=myEntity.Where(me => me.Users.Any(u => u.Name.Contains(name)));
如果您希望所有用户都包含一些字符串模式,则使用 All
扩展方法代替 Any
。