我有两个通过一对多关系连接的类:
public class Movie
{
public int Id { get; set; }
public string Title { get; set; }
public string Synopsis { get; set; }
public IList<Tag> Tags { get; set; }
}
public class Tag
{
public int Id { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何找到包含给定字符串的所有电影?只要我不深入标签,我就会管理:
var result = movies.Where(m => m.Title.Contains(searchString) |
m.Synopsis.Contains(searchString));
Run Code Online (Sandbox Code Playgroud)
这是一些伪代码,只在我的梦中工作:
var result = movies.Where(m => m.Title.Contains(searchString) |
m.Synopsis.Contains(searchString) |
m.Tags.Name.Contains(searchString));
// Cannot access Name property of Tags like this
Run Code Online (Sandbox Code Playgroud)
做正确的方法是什么?
Gil*_*een 10
您无法访问a的属性,Tag因为您没有Tag对标记集合的引用.因此,您需要使用linq .Any来查询:
确定序列的任何元素是否满足条件.
所以:
var result = movies.Where(m => m.Title.Contains(searchString) |
m.Synopsis.Contains(searchString) |
m.Tags.Any(t => t.Name.Contains(searchString)));
Run Code Online (Sandbox Code Playgroud)
还要考虑使用||运算符而不是|运算符.两者都表现合乎逻辑,OR但前者会懒惰地进行(即一旦遇到a就停止true).阅读更多:C#'或'运营商?和
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |