我有两个班级:
public class Op
{
[Key]
public int OpId { get; set; }
private OpportunitiesDb db = new OpportunitiesDb();
[Required(ErrorMessage = "Opportunity title is required")]
[DisplayName("Opportunity Title")]
public string Title { get; set; }
[DisplayName("Tags")]
public ICollection<Tags> Tags { get; set; }
}
public class Tags
{
[Key]
public int Id { get; set; }
public int OpId { get; set; }
public string Tag { get; set; }
}
我有1类Type OpId。 Op类可以有许多标签(一对多关系)。
此OpId有一个标记让我们假设&#34; Water&#34;
现在我需要在标签中找到所有拥有&#34; Water&#34;作为标签。 db上下文有2个表(Ops和Tags)。
我的控制器的动作是: public async Task QueryTags(int?id) { if(id == null) { return RedirectToAction(&#34; IdNotPresent&#34;,&#34;错误&#34;); }
Op SelectedOp = db.Opportunities.Find(id);
//get tags for ID.
var Tags = db.Tags
.Where(s => s.OpId == id);
var model =
from r in db.Tags
where (r.OpId == id)
select r;
return PartialView(await model.ToListAsync());
}
答案 0 :(得分:0)
按Tag
分组
from r in db.Tags
join o in db.Ops on r.OpId equals o.OpId
group o by r.Tag into ops
select ops
按标记过滤以获取您正在寻找的行动
答案 1 :(得分:0)
我需要的是这个搜索,这将带来所有在字符串Query var中具有相同标记的Ops:
var AllOpsWithTagQuery = from r in db.Tags
where(r.Tag.StartsWith(Query))
join o in db.Opportunities on r.OpId equals o.OpId
select o;