我已经四处寻找并看到了一堆类似的问题,但我仍然无法弄清楚这一点。我有两个类资产和标签。以下是它们的定义:
public class Asset
{
[Key]
public int AssetID { get; set; }
public decimal? Height { get; set; }
public decimal? Width { get; set; }
public decimal? Depth { get; set; }
public decimal? Radius { get; set; }
public string Name { get; set; }
[Display(Name = "Manufacturer")]
public int ManufacturerID { get; set; }
[Display(Name = "Type")]
public int PackageTypeID { get; set; }
public virtual Manufacturer Manufacturer { get; set; }
public virtual PackageType PackageType { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
}
public class Tag
{
public int TagID { get; set; }
public string Key { get; set; }
public string Value { get; set; }
public virtual ICollection<Asset> Assets { get; set; }
}
我的资产索引页面上有一个搜索框,我希望能够搜索 Asset.Name、Manufacturer.Name、Asset.Tag.Key 和 Asset.Tag.Value。这是我到目前为止所得到的。
var assets = from a in db.Assets
select a;
if (!String.IsNullOrEmpty(searchString))
{
assets = assets.Where(a => a.Name.ToUpper().Contains(searchString.ToUpper())
|| a.Manufacturer.Name.ToUpper().Contains(searchString.ToUpper()));
}
现在,我不知道如何访问/搜索 Tag.Key 或 Tag.Value。我已经尝试过使用 LINQ 查询进行各种连接,但我还不够聪明。
任何帮助,将不胜感激。