我有一个元组列表(List<Tuple<string,string>>
) of Fname
and Version
作为输入。
eg.
[('firstname1','1.0.1'), ('firstname2','2.3.3'), ('firstname3','4.4.1')]
是否可以编写一个 LINQ 查询,该查询本质上执行以下 SQL 查询的操作并返回元组Name
and AttribX
?
SELECT e.Name, a.AttribX
FROM Element e
JOIN Attributes a ON a.AId=e.EAId
where (a.FName='firstname1' and a.Version='1.0.1')
OR (a.Fname='firstname2' and a.Version='2.3.3')
OR (a.Fname='firstname3' and a.Version='4.4.1')
输入中有大约 1000 个元组。
Your Where
子句可以是(如果使用 LINQ to Objects):
var results = yourData.Where(z => yourListOfTuples.Contains(new Tuple<string, string>(z.FirstName, z.Version)))
尝试的另一个选项(针对实体框架):
var tuples = yourListOfTuples.Select(z => z.Item1 + "-" + z.Item2).ToList();
var results = yourData.Where(z => tuples.Contains(z.FirstName + "-" + z.Version))
第二个代码示例只是连接两个字段 - 这将对数据库查找产生负面影响(因为它可能必须进行扫描而不是查找)。如果出现以下情况,您可能还会遇到问题:FirstName
or LastName
包含-
例如。从好的方面来说,它将仅使用 1000 个参数,而不是 2000 个。:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)