繁体   English   中英

过滤LINQ中的投影属性字段以查询实体

[英]Filtering on projected property field in LINQ to entities query

下面的LINQ to Entities查询将执行一个子查询,并将其结果投影到MyViewModel

我正在寻找在SubModelText属性中使用myText字符串变量获取所有ProjectedModel对象。

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();

伪代码如下所示:

string myText = "abc";
items = items where SomeItems.Text contains myText

如果要获得所有子项都具有给定文本的所有项,那么编写起来就很容易了:

items = items.Where(item => 
    item.SomeItems.Any(subItem => subItem.Text.Contains(myText)));

如果要匹配所有项目,请使用All 实际上,您的需求目前尚不完整,因为它们假设只有一个子项目。 (如果您知道总会有一个子项目,则不要使SubItems成为一个集合,使其成为一个项目,然后在查询中获得第一个项目。)

你可以这样做

更新的代码

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; SqlMethods 参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM