gpt4 book ai didi

c# - Entity Framework - 加入列表

转载 作者:太空宇宙 更新时间:2023-11-03 16:39:44 25 4
gpt4 key购买 nike

我需要从我的数据库中检索与普通列表(不是 EF)中的项目列表相匹配的实体列表。 Entity Framework 4.1 可以做到这一点吗?

例子:

var list = new List<string> { "abc", "def", "ghi" };
var items = from i in context.Items
where list.Contains(i.Name)
select i;

这对于返回匹配一个属性的行非常有用,但实际上我有一个更复杂的属性:

var list = new List<Tuple<string, string>>
{
new Tuple<string,string>("abc", "123"),
new Tuple<string,string>("def", "456")
};

// i need to write a query something like this:
var items = from i in context.Items
where list.Contains(new Tuple<string,string>(i.Name, i.Type))
select i;

我知道这是无效的,因为它会说它需要是原始类型,但是有没有什么方法可以完成我想要完成的事情,或者我是否需要求助于存储过程?

最佳答案

您有几个选择:

1) 当然,您可以编写一个存储过程来执行您需要的操作并调用它。

2) 您可以将表读入内存,然后查询内存列表...这样您就不必使用原语:

var items = from i in context.Items.ToList()
where list.Contains(new Tuple<string, string>(i.Name, i.Type))
select i;

<罢工>3) 您还可以将查询转换为使用基元来实现相同的目标:

var items = from i in context.Items
join l in list
on new { i.Name, i.Type } equals
new { Name = l.Item1, Type = l.Item2 }
select i;

<罢工>

只要表格不是很大,我就会选择第二个选项。否则,选择第一个。

关于c# - Entity Framework - 加入列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053468/

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