我需要查询的实体框架对象集合,并找到符合的参数列表中的对象的列表对象。例如,对象可能包含字段(p1,p2,p3,p4,... pn)。 (p1 = 3,p2 = 7,P3 = 23),(p1 = 3,p2 = 43,p3 = 45),(p1 = 1,p2 = 232, p3 = 321)。LINQ使用的元组
由于集合可以包含很多元素,我可以找很多(前80)这样的元组,我不希望这样做在一个循环中,因为这将需要大量的往返。我宁愿这样做是一个单一的LINQ语句。这可能吗?
感谢,
杰里
我需要查询的实体框架对象集合,并找到符合的参数列表中的对象的列表对象。例如,对象可能包含字段(p1,p2,p3,p4,... pn)。 (p1 = 3,p2 = 7,P3 = 23),(p1 = 3,p2 = 43,p3 = 45),(p1 = 1,p2 = 232, p3 = 321)。LINQ使用的元组
由于集合可以包含很多元素,我可以找很多(前80)这样的元组,我不希望这样做在一个循环中,因为这将需要大量的往返。我宁愿这样做是一个单一的LINQ语句。这可能吗?
感谢,
杰里
是的,你可以这样做。只要这样做:
var matches = entities.Where(e =>
(e.p1 == 3 && e.p2 == 7 && e.p3 == 23)
|| (e.p1 == 3 && e.p2 == 43 && e.p3 == 45)
|| (e.p1 == 1 && e.p2 == 232 && e.p3 == 321));
你可以试试下面的办法,虽然我不知道它会使用LINQ到实体工作。
IEnumerable<Tuple<int, int, int>> criterias = ...;
var filteredObjects = DataContext.YourObjects
.Join(criterias,
o => new {o.P1, o.P2, o.P3}, // your objects key
c => new {o.P1, o.P2, o.P3}, // criteria key
(o, c) => o);
“我想找到3个对象”:这是否意味着将有完全匹配每个条件的对象?我有点困惑,因为这似乎与“我可能正在寻找很多(例如80)这样的元组”相矛盾。 – Ani 2011-03-23 22:53:05
@Ani:我读它,因为他已经在服务器上的许多对象,他希望那些3场比赛,即:3个对象回来......(不知道这是一个正确的解释,虽然) – 2011-03-23 23:03:54