将通用集合过滤到包含字符串集合中任何项目的记录

时间:2012-11-27 17:55:23

标签: c# linq generic-list

string rep = "Joe Shmoe"

ObjectSet<StoreData> storeData = edmContext.StoreData;
ObjectSet<CallData> callData = edmContext.CallData;
IEnumerable<string> repStoreData = storeData.Where(r => r.RepName == rep).Select(s => s.Location);

IEnumerable<CallData> repCallData = Here is where I want to filter down the callData collection down to just the records that have a location that is contained in the repStoreData collection

我尝试过使用某种形式的Join和Any,但并不真正理解那些要求的论点。

这是我最好的尝试,这是不行的。

... = callData.Join(d => d.LOCATION.Any(repStoreData));

1 个答案:

答案 0 :(得分:2)

你不必使用联接。你可以使用:

callData.Where(d => repStoreData.Contains(d.LOCATION))

假设d.LOCATION单个字符串。

但是,您可能不希望将当前repStoreData声明用作IEnumerable<string> - LINQ将无法将其转换为要执行的查询 at数据库

但是,如果您能够将repStoreData声明为IQueryable<string>,则更有可能正常运作。我不知道这是否适用于ObjectSet<T>,但我希望如此。