小编Lau*_*rin的帖子

如何有效地比较列表?

我目前正在使用asp.net中的Web应用程序.在某些api调用中,有必要将ListA与ListB的列表进行比较,以确定ListA是否具有ListB中任何List的相同元素.换句话说:如果ListA包含在ListB中.

使用EF-Code-First数据库的Linq查询这两个集合.ListB有一个匹配的List或者没有,只有一个.在最坏的情况下,ListB有数百万个元素,因此比较需要是可扩展的.

而不是做嵌套的foreach循环,我正在寻找一个纯粹的linq查询,它将让db完成工作.(在考虑多列索引之前)

为了说明结构:

//In reality Lists are queried of EF 
var ListA = new List<Element>();
var ListB = new List<List<Element>>(); 
List<Element> solution;
bool flag = false;
foreach (List e1 in ListB) {
   foreach(Element e2 in ListA) {
        if (e1.Any(e => e.id == e2.id)) flag = true;
        else {
             flag = false;
             break;
        }
    }
        if(flag) {
           solution = e1;
           break;
        }
}
Run Code Online (Sandbox Code Playgroud)

更新结构

由于它是一个EF数据库,我将提供相关的对象结构.我不确定我是否可以发布实际代码,所以这个例子仍然是通用的.

//List B
class Result {
       ...
       public int Id;

       public virtual ICollection<Curve> curves; 

       ...
} …
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework bigdata

6
推荐指数
1
解决办法
212
查看次数

标签 统计

bigdata ×1

c# ×1

entity-framework ×1

linq ×1