C# Linq 搜索内部对象链接 属性
C# Linq search inside object linked property
我正在尝试在我的对象集的某些属性中进行一些搜索,但我在安装 linq 查询的正确方法上遇到了一些麻烦,我有 VT_Video class它有它的属性和一些链接对象
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 to 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))
如果集合中的任何标签的名称包含您的搜索字符串,则 returns 为真。
我正在尝试在我的对象集的某些属性中进行一些搜索,但我在安装 linq 查询的正确方法上遇到了一些麻烦,我有 VT_Video class它有它的属性和一些链接对象
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 to 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))
如果集合中的任何标签的名称包含您的搜索字符串,则 returns 为真。