Hi,
For you first question, the only odd thing i see is :
emps.GetMulti(skillFilter ,-1,sort,joins);
You may set 0 instead of -1...
For your second question, you will use 2 or more relations from Employee to EmployeeLanguage. For doing that, you must use aliases :
RelationCollection joins = new RelationCollection();
joins.Add(EmployeeEntity.Relations.EmployeeLanguageEntityUsingEmployeeId,"Dutch" JoinHint.Left);
joins.Add(EmployeeEntity.Relations.EmployeeLanguageEntityUsingEmployeeId,"English" JoinHint.Left);
and the same for predicates :
filter.AddWithAnd(New FieldCompareValue(EmployeeLanguageFields.LanguageId,ComparisonOperator.Equals , 3,"Dutch");
filter.AddWithAnd(New FieldCompareValue(EmployeeLanguageFields.ReadingLevel ,ComparisonOperator.GreaterEqual , 2,"Dutch");
FieldCompareValue(EmployeeLanguageFields.LanguageId,ComparisonOperator.Equals , 4,"English");
filter.AddWithAnd(New FieldCompareValue(EmployeeLanguageFields.ReadingLevel ,ComparisonOperator.GreaterEqual , 5,"English");
Cheers