C# Linq到实体-也过滤关系

C# Linq到实体-也过滤关系,c#,linq,entity-framework,linq-to-entities,C#,Linq,Entity Framework,Linq To Entities,我有两张桌子。 表1和表2。他们有一对多的关系。我正在尝试做一个如下的查询。它可以很好地找到结果。我的意思是,如果它不能根据参数找到任何结果,我会像往常一样得到空值。然而,它始终在表1类中提供表2的所有结果,我确实希望根据查询只获得表2的结果 dc.Table1s.SingleOrDefault(t1 => t1.SearchField1 == param1 && t1.Table2s.Any(t2 => t2.

我有两张桌子。 表1和表2。他们有一对多的关系。我正在尝试做一个如下的查询。它可以很好地找到结果。我的意思是,如果它不能根据参数找到任何结果,我会像往常一样得到空值。然而,它始终在表1类中提供表2的所有结果,我确实希望根据查询只获得表2的结果

dc.Table1s.SingleOrDefault(t1 => t1.SearchField1 == param1 
                           && t1.Table2s.Any(t2 => t2.SearchField2 == param2 
                                          && t2.SearchField3 == param3));
更新日期:2011年6月8日 你能试试这个吗?这样你就可以在表1中得到经过过滤的表2了

var result = from  t1 in Table1s
             where t1.key == t2.key && t1.SearchField1 == param1
             select new Table1s //creating new Table1s Object with Filtered Table2s values
                    {
                        key = t1.key,
                        SearchField1 = t1.SearchField1
                        //set all other Table1s propeties from t1
                        ...
                        Table2s = t1.Table2s.Where( x=> x.SearchField2 == param2 && x.SearchField3 == param3)
                    };


-----------------------------------------------------------------
因为您正在检查是否存在任何问题,所以您只需要得到与您的条件匹配的Table1实体。Table1s.Table2s提供所有相关条目。你需要再次过滤它

dc.Table1s.SingleOrDefault(t1 => t1.SearchField1 == param1 
                           && t1.Table2s.Any(t2 => t2.SearchField2 == param2 
                                          && t2.SearchField3 == param3));
当您需要为表1获取与搜索条件匹配的表2时

var table2s = table1.Table2s.Where(t2 => t2.SearchField2 == param2 && t2.SearchField3 == param3);
如果您直接需要Table2,可以执行以下操作:

var result = from t1 in Table1s
             from t2 in Table2s
             where t1.key == t2.key && t1.SearchField1 == param1
                                    && t2.SearchField2 == param2 
                                    && t2.SearchField3 == param3
             select t2;

谢谢你的回答。但我想要一个结果,它是Table1类。然后,当我转到表1.2时,我会看到过滤后的数据,而不是所有数据…:再次感谢你的回答。你写的是我最糟糕的情况。我不喜欢它,因为我不想设置表1的所有属性。你明白我的困扰吗我想我的主要问题是懒散: