【发布时间】:2014-05-21 16:15:39
【问题描述】:
找不到与SELECT * FROM [Source] WHERE [Field] IN [String Array] 等效的 lambda linq。我需要从包含字符串数组中的邮政编码的数据表中选择所有数据。我想要一种更快的方法,而不是仅仅遍历比较它们的每一行,因为我相信这将是相当低效的(或者我相信无论如何都会如此)。我似乎无法在 Google 上找到关于如何在数据表上执行 lambda LINQ IN 查询的充分答案。任何帮助都会很棒!这是我目前拥有的:
List<string> lst = dtEtechZipCodeEmailRecipients.AsEnumerable()
.Select(o => o.Field<string>("Email")).Distinct().ToList();
for (int i = 0; i < lst.Count - 1; ++i)
{
string email = lst[i].ToString().ToUpper();
string[] zipCodes = dtEtechZipCodeEmailRecipients.AsEnumerable()
.Where(zip => (zip.Field<string>("Email") ?? (object)String.Empty).ToString().ToUpper() == email)
.Select(zip => zip.Field<string>("ZipCode")).ToArray();
Console.WriteLine(" - " + email);
dtEtechModelRequests.AsEnumerable().Where(mod => mod.Field<string>("ZipCode").Contains(zipCodes)).Select(mod => mod);
}
这不起作用,除了.Contains 之外的所有东西都可以满足我的需要。我离开了.Contains 试图证明我的观点。
【问题讨论】:
-
因此您想知道所有邮政编码的列表是否包含在单个邮政编码中。那有意义吗?所有这些邮政编码都会存在于您拥有的一个邮政编码中吗?