trying to get my head round what the joins should look like for the example below. Any help determining if it is poss开发者_开发技巧ible to write linq for the following would be greatly apprieciated!
List<string> col1;
Dictionary<string, List<string>> join2;
I wish to select all keys from the dictionary where the items in col1 exist in the Value List collection of the dictionary.
IEnumerable<string> query = from c1 in col1
join kvp in join2 on c1 equals kvp.Value
where c1 == "foo"
orderby kvp.Key
select kvp.Key;
Obviously the above fails as kvp.Value is a List and not a string to equate to c1 - any pointers?
I am not sure why the join is needed... if you are select on "foo" then the following would yield the same result:
IEnumerable<string> query = from kvp in join2
where kvp.Value.Contains ("foo")
orderby kvp.Key
select kvp.Key;
Alternatively with the join
IEnumerable<string> query = from c1 in col1 where c1 == "foo" from kvp in join2
where kvp.Value.Contains (c1)
orderby kvp.Key
select kvp.Key;
from kvp in dict
from e in kvp.Value
... // join on e here
var result = from c1 in col1.Keys
from c2 in col1.Values
where c1 == c2
select c1;
精彩评论