以下 LINQ to Entities 查询,执行子查询并将其结果投影到MyViewModel
。
我希望在ProjectedModel
的{{1}}属性中获取myText
字符串变量的所有Text
个对象。
SubModel
伪代码看起来像:
var items = (from t1 in db.MyTable
select new MyModel
{
Id = t1.MyId,
SomeItems = (from s1 in db.MyOtherTable
where s1.LinkedId == t1.Id
select new SubModel
{
Id = s1.Id,
Text = s1.Text
})
}).ToList();
答案 0 :(得分:1)
如果你想得到子项的 Any 所有项目都有给定文本,那么写起来很容易:
items = items.Where(item =>
item.SomeItems.Any(subItem => subItem.Text.Contains(myText)));
如果您希望所有项匹配,请使用All
。事实上,您的要求目前尚未完成,因为它们假设只有一个子项目。 (如果你知道总会有一个子项目,那么就不要将SubItems
作为一个集合,将其作为单个项目,并获取查询中的第一个项目。)
答案 1 :(得分:0)
你可以这样做
item.Where(w => myText.Contains(w.Text));
或者您可以使用.StartsWith()
或.EndsWith()
参考:LIKE
我的回答已经过时,或者可能对你有所帮助,但可能会有更多帮助你的事情
var selectItedm = (from a in item
where SqlMethods.Like(a.Text,"%"+myText+"%")
select new {a.Id,a.Text}).ToList();
您可以使用更多SqlMethods
只包含System.Data.Linq.SqlClient;
参考