gpt4 book ai didi

c# - 搜索元组的 LINQ 查询

转载 作者:行者123 更新时间:2023-11-30 23:10:54 26 4
gpt4 key购买 nike

我有一个 List<Tuple<string,string>> 的元组列表 ( Fname )和 Version作为输入。

例如。

[('firstname1','1.0.1'), ('firstname2','2.3.3'), ('firstname3','4.4.1')] 

是否可以编写一个 LINQ 查询,基本上执行以下 SQL 查询的操作并返回 Name 的元组?和 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 个元组。

最佳答案

您的 Where 子句可以是(如果使用 LINQ to Objects):

var results = yourData.Where(z => yourListOfTuples.Contains(new Tuple<string, string>(z.FirstName, z.Version)))

尝试的另一种选择(针对 Entity Framework ):

var tuples = yourListOfTuples.Select(z => z.Item1 + "-" + z.Item2).ToList();
var results = yourData.Where(z => tuples.Contains(z.FirstName + "-" + z.Version))

第二个代码示例只是连接两个字段 - 这将对数据库查找产生负面影响(因为它可能必须进行扫描而不是查找)。例如,如果 FirstNameLastName 包含 -,您也可能会遇到问题。从好的方面来说,它将仅使用 1000 个参数而不是 2000 个。:)

关于c# - 搜索元组的 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45053565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com