ОБНОВЛЕНИЕ @ 6/8/2011 Можете ли вы попробовать это, чтобы получить отфильтрованные таблицы 2 в таблице 1
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)
};
-----------------------------------------------------------------
Поскольку вы проверяете «Любой», вы просто получаете объект таблицы 1, который соответствует вашему условию,Table1s.Table2s дает вам все связанные записи.Вам нужно снова отфильтровать его
dc.Table1s.SingleOrDefault(t1 => t1.SearchField1 == param1
&& t1.Table2s.Any(t2 => t2.SearchField2 == param2
&& t2.SearchField3 == param3));
, в то время как вам нужно выбрать Table2s для Table1 в соответствии с вашим условием поиска,
var table2s = table1.Table2s.Where(t2 => t2.SearchField2 == param2 && t2.SearchField3 == param3);
, если вам непосредственно нужны Table2s, вы можете сделать:
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;