c# Linq搜索内部对象链接属性
本文关键字:链接 属性 内部对象 搜索 Linq | 更新日期: 2023-09-27 18:07:22
我正试图在我的对象集的一些属性内进行一些搜索,但我在正确的方式上遇到了一些麻烦来安装我的linq查询,我有我的VT_Video类,它有它的属性和一些链接对象
public partial class VT_Video
{
public int ID { get; set; }
public string title { get; set; }
public string description { get; set; }
public virtual ICollection<VT_VideoTag> VT_VideoTag { get; set; }
}
public partial class VT_VideoTag
{
public int ID { get; set; }
public int tagID { get; set; }
public int videoID { get; set; }
public virtual VT_Tag VT_Tag { get; set; }
public virtual VT_Video VT_Video { get; set; }
}
public partial class VT_Tag
{
public int ID { get; set; }
public string name { get; set; }
public virtual ICollection<VT_VideoTag> VT_VideoTag { get; set; }
}
我想要完成的是通过VT_Video.title
, VT_Video.description
和VT_Video.VT_VideoTag.VT_Tag.name
在我的Video collection
中搜索user given word
,到目前为止我所做的只是搜索title
和description
:
var myVideos = db.VT_Video.Include("VT_VideoTag")
.Include("VT_VideoTag.VT_Tag")
.Where(vid =>
vid.descricao.Contains(strBusca) ||
vid.titulo.Contains(strBusca)).ToList();
现在,我知道我可以用一些foreach和额外的代码做我想做的事情,但我想知道是否有可能使用linq来做到这一点,并保持我的代码干净。
谢谢。
我没有使用LINQ到SQL太多,但似乎.Any()
会满足您的要求:
var myVideos = db.VT_Video.Include("VT_VideoTag")
.Include("VT_VideoTag.VT_Tag")
.Where(vid =>
vid.descricao.Contains(strBusca) ||
vid.titulo.Contains(strBusca) ||
vid.VT_VideoTag.Any(tag => tag.name.Contains(strBusca))).ToList();
注意我添加了这个子句:
vid.VT_VideoTag.Any(tag => tag.name.Contains(strBusca))
如果集合中的任何标记的名称包含您的搜索字符串,则返回true。