gpt4 book ai didi

c# - 在Linq中使用List>返回数据

转载 作者:太空狗 更新时间:2023-10-29 22:57:35 24 4
gpt4 key购买 nike

给定:

List<int> myList;

如果我想返回记录 ID 包含在此列表中的数据,我只需执行以下操作:

var q = db.Table.Where(c=> myList.Contains(c.ID));

但是,给定:

List<Tuple<int, int>> myList;

我将如何编写 Linq 查询以返回满足两个条件的记录?对于一个数据点,我会写:

var q = db.Table.Where(c=>
c.ID == myList.Item1
&& c.AnotherValue == myList.Item2);

我如何将上述语句转换为适用于 List<Tuple<int, int>>

最佳答案

元组 是一种结构,您的 Linq 提供程序无法将其转换为 sql。一个解决方案可能是切换到 Linq to Objects

var q = db.Table.AsEnumerable()
.Where(c=> myList.Any(tuple => c.ID == tuple.Item1 &&
c.AnotherValue == tuple.Item2));

但是这个解决方案的坏处是您要加载该表中的所有行以在内存中进行过滤。

另一种解决方案可能是使用 Linqkit :

var predicate = PredicateBuilder.False<Table>();

foreach (string t in myList)
{
predicate = predicate.Or(c =>c.ID == t.Item1 && c.AnotherValue == t.Item2));
}

db.Table.AsExpandable().Where(predicate);

您将在 link 中找到有关最后一个解决方案的更多信息

关于c# - 在Linq中使用List<Tuple<int, int>>返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37440014/

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