给定
@Entity
public class Document {
@Id
@Column(name = "DOCUMENT_ID")
private Long id;
@ElementCollection
@CollectionTable(
name="TAG",
joinColumns=@JoinColumn(name="DOCUMENT_ID")
)
@Column(name="TAG")
private Set<String> tags;
}
Run Code Online (Sandbox Code Playgroud)
查找带有特定标签集合的所有文档。本质上,EclipseLink 相当于:
SELECT d FROM Document d WHERE :tag1 MEMBER OF d.tags
INTERSECT
SELECT d FROM Document d WHERE :tag2 MEMBER OF d.tags
...
SELECT d FROM Document d WHERE :tagn MEMBER OF d.tags
Run Code Online (Sandbox Code Playgroud)
但使用 JPA CritieraQuery。
我想创建一个字符串列表:
a)是2个或更多列表的交互(所有列表中出现的字符串),例如:
words = [["a", "b", "c"], ["d", "a", "b"], ["f", "a", "g"]]
set.intersection(*(set(t) for t in words))
Run Code Online (Sandbox Code Playgroud)
返回:
set(['a'])
Run Code Online (Sandbox Code Playgroud)
和
b)是两个或多个列表的交集,除了单个字符串可能从单个集合中丢失n次,或者换句话说,在我认为必要时,字符串可能从1个或多个列表中丢失.
所以说我希望允许它从单个列表中丢失,将该逻辑应用于我应该获得的上述单词变量:
set(['a', 'b'])
Run Code Online (Sandbox Code Playgroud)
如果我允许它从2套中丢失,它将返回上述单词变量中的所有字符.
我已经设法做了一个),但我怎么做b)?
我正在尝试在Fortran中生成两个1-D数组的交叉.
目的是使用此交集作为掩码,maxloc以便我可以将最多的几个元素从一个数组拉到另一个数组(类似于在最大堆中重复删除根的行为).
目前我只是在将索引中maxloc的值插入第二个数组后,将找到的索引处的值设置为零,但我希望Fortran有一个聪明的与掩码相关的方法.(在最大检索过程中保留原始数组也很好)
从包含来自两个集合的值的 2 个集合创建子集的最有效方法是什么?任何 C++ STL 库都可以用来解决这个问题(如果可能的话,不用 Boost 库):
Set A = {2, 3, 5, 7, 11, ...}
Set B = {1, 3, 5, 7, 9, 11, ...}
Subset should be = {3, 5, 7, 11, ...}
Run Code Online (Sandbox Code Playgroud) 有没有比计算它们的交集更容易/更快的方法来找出两个字典是否不相交?
对于交叉点,我找到了这个答案,所以不相交测试看起来像这样:
def dicts_disjoint(a, b):
keys_a = set(a.keys())
keys_b = set(b.keys())
intersection = keys_a & keys_b
return not len(intersection)
Run Code Online (Sandbox Code Playgroud)
但是我认为这是低效的,因为它总是计算整个交叉点(没有短路退出)。
有什么更好的想法吗?
我有两个 std::unordered_map
std::unordered_map<int, int> mp1;
std::unordered_map<int, int> mp2;
Run Code Online (Sandbox Code Playgroud)
我需要找到键值对的交集并将其存储在表单的另一个映射中。
std::unordered_map<int, int> mp;
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点??
我目前正在尝试将 ID 列表与数据库实体的子属性相交。
这样做的目的是查找所有列表 Id 与子实体“Location”中至少一个实体相匹配的所有“Form”记录。我相信 SQL 等效项将在连接表“Locations”上执行 IN。
相关元素的结构如下:(我故意省略了所有其他属性)。
public class Form
{
[Column("FormId"), DatabaseGenerated(DatabaseGeneratedOption.Identity), Key]
public Guid Id { get; set; }
public virtual ICollection<Location> Locations { get; set; }
}
public class Location
{
[Column("LocationId"), DatabaseGenerated(DatabaseGeneratedOption.Identity), Key]
public Guid Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试执行以下操作:
var locationIdsL = locationIds.Split(',').Select(Guid.Parse).ToList();
return baseQuery.Include(x => x.Locations).Where(x => x.Locations.Select(y => y.Id).Intersect(locationIdsL).Count() == locationIdsL.Count);
Run Code Online (Sandbox Code Playgroud)
* 假设该locationIdsL变量是一个有效的 Guid 列表。
上面的代码返回以下异常:
System.ArgumentNullException:值不能为空。(参数“参数”)位于 System.Linq.Expressions.Expression.Lambda(表达式主体、字符串名称、布尔型 tailCall、IEnumerable`1 参数)位于 System.Linq.Expressions.Expression.Lambda(表达式主体、ParameterExpression[] 参数)在 Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.ReducingExpressionVisitor.Visit(表达式表达式) 在 System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor 访问者,IArgumentProvider …
c# lambda entity-framework set-intersection entity-framework-core
我试图迭代一系列交叉点,其中每个迭代是一组新行的交集.我的代码看起来有点像下面这样:
for liness in range(len(NNCatelogue)):
for iii in [iii for iii, y in enumerate(NNCatelogue[iii]) if y in set(NNCatelogue[liness]).intersection(catid)]:
print iii, y
Run Code Online (Sandbox Code Playgroud)
NNCatelogue本质上是一个1268 X 12矩阵,每个新的liness迭代都会调用一个新行.如果我只是输入我想要的行号(即:0,1,2 ......),那么我得到预期的输出(前面没有for循环).上面写的代码给出了以下输出:
10 C-18-1064
4 C-18-1122
4 C-18-1122
5 C-18-1122
5 C-18-1122
7 C-18-1122
8 C-18-1122
9 C-18-1122
10 C-18-1122
11 C-18-1122
6 C-18-1122
...
Run Code Online (Sandbox Code Playgroud)
预期产量应为:
0 C-18-1
1 C-18-259
2 C-18-303
3 C-18-304
4 C-18-309
5 C-18-324
6 C-18-335
7 C-18-351
8 C-18-372
9 C-18-373
10 C-18-518
11 C-18-8
Run Code Online (Sandbox Code Playgroud)
知道我可能会出错吗?任何帮助是极大的赞赏!
更新:
我尝试了其中一个答案的变体,虽然它更接近我所期待的,但它并不完全存在.这是我尝试过的:
counter = 0
for …Run Code Online (Sandbox Code Playgroud) 给定以下三元组,域和范围是并集、交集还是其他?
<http://www.stackoverflow.com/questions/ask> rdfs:domain <http://stackoverflow.com/questions/tagged/rdf> .
<http://www.stackoverflow.com/questions/ask> rdfs:domain <http://stackoverflow.com/questions/tagged/owl> .
<http://www.stackoverflow.com/questions/ask> rdfs:domain <https://www.w3.org/TR/owl-ref/#Boolean> .
<http://www.stackoverflow.com/questions/ask> rdfs:range <http://stackoverflow.com/questions/tagged/rdf> .
<http://www.stackoverflow.com/questions/ask> rdfs:range <http://stackoverflow.com/questions/tagged/owl> .
<http://www.stackoverflow.com/questions/ask> rdfs:range <https://www.w3.org/TR/owl-ref/#Boolean> .
Run Code Online (Sandbox Code Playgroud)
换句话说,http://www.stackoverflow.com/questions/ask谓词是否具有三个域、三个范围,并且可以推断出任何有效的 域-范围配对?
当属性 P 具有多个
rdfs:domain属性时,则由带有谓词 P 的三元组的主语表示的资源是属性所声明的所有类的实例rdfs:domain。当 P 具有多个
rdfs:range属性时,则具有谓词 P 的三元组的对象所表示的资源是属性所声明的所有类的实例rdfs:range。
我有一个n表示为的整数集合列表lst = [S1, S2, S3 ... Sn],我想找到所有集合的交集。
有没有最佳的方法来做到这一点?