如何在不使用join-on-equals-into
子句的情况下在C#LINQ中对对象执行左外连接?有没有办法用where
条款做到这一点?正确的问题:对于内连接很容易,我有这样的解决方案
List<JoinPair> innerFinal = (from l in lefts from r in rights where l.Key == r.Key
select new JoinPair { LeftId = l.Id, RightId = r.Id})
Run Code Online (Sandbox Code Playgroud)
但对于左外连接我需要一个解决方案.我是这样的,但它不起作用
List< JoinPair> leftFinal = (from l in lefts from r in rights
select new JoinPair {
LeftId = l.Id,
RightId = ((l.Key==r.Key) ? r.Id : 0
})
Run Code Online (Sandbox Code Playgroud)
JoinPair是一个类:
public class JoinPair { long leftId; long rightId; }
Run Code Online (Sandbox Code Playgroud) 场景:
假设我有两个表,TableA和TableB.TableB的主键是单列(BId),是TableA中的外键列.
在我的情况下,我想删除TableA中与TableB中的特定行链接的所有行:我可以通过连接执行此操作吗?删除从连接中提取的所有行?
DELETE FROM TableA
FROM
TableA a
INNER JOIN TableB b
ON b.BId = a.BId
AND [my filter condition]
Run Code Online (Sandbox Code Playgroud)
或者我被迫这样做:
DELETE FROM TableA
WHERE
BId IN (SELECT BId FROM TableB WHERE [my filter condition])
Run Code Online (Sandbox Code Playgroud)
我问的原因是在我看来,在处理较大的表时,第一个选项会更有效.
谢谢!
有没有更简单的方法将列表中的字符串项连接成一个字符串?
我可以使用该str.join()
功能加入列表中的项目吗?
例如,这是输入['this','is','a','sentence']
,这是所需的输出this-is-a-sentence
sentence = ['this','is','a','sentence']
sent_str = ""
for i in sentence:
sent_str += str(i) + "-"
sent_str = sent_str[:-1]
print sent_str
Run Code Online (Sandbox Code Playgroud) 如何在MongoDB中执行SQL Join等效项?
例如,假设你有两个集合(用户和评论),我想用pid = 444以及每个集合的用户信息来提取所有评论.
comments
{ uid:12345, pid:444, comment="blah" }
{ uid:12345, pid:888, comment="asdf" }
{ uid:99999, pid:444, comment="qwer" }
users
{ uid:12345, name:"john" }
{ uid:99999, name:"mia" }
Run Code Online (Sandbox Code Playgroud)
有没有办法用一个字段拉出所有评论(例如......查找({pid:444}))以及与每个评论相关的用户信息?
目前,我首先得到符合我标准的评论,然后找出该结果集中的所有uid,获取用户对象,并将它们与评论的结果合并.好像我做错了.
我问了一个问题并得到了这个答复.
UPDATE TABLE_A a JOIN TABLE_B b
ON a.join_col = b.join_col AND a.column_a = b.column_b
SET a.column_c = a.column_c + 1
Run Code Online (Sandbox Code Playgroud)
现在我希望这样做,如果有3个表涉及这样的事情.
UPDATE tableC c JOIN tableB b JOIN tableA a
Run Code Online (Sandbox Code Playgroud)
我的问题基本上是...这可以在UPDATE
声明中做3个表连接吗?它的正确语法是什么?谢谢.我做的......
JOIN tableB, tableA
JOIN tableB JOIN tableA
Run Code Online (Sandbox Code Playgroud) 我正在编写一个LINQ to SQL语句,我正在使用ON
C#中的子句进行普通内连接的标准语法.
如何在LINQ to SQL中表示以下内容:
select DealerContact.*
from Dealer
inner join DealerContact on Dealer.DealerID = DealerContact.DealerID
Run Code Online (Sandbox Code Playgroud) 我在使用LINQ和Lambda编写的查询时遇到问题.到目前为止,我的代码中出现了很多错误:
int id = 1;
var query = database.Posts.Join(database.Post_Metas,
post => database.Posts.Where(x => x.ID == id),
meta => database.Post_Metas.Where(x => x.Post_ID == id),
(post, meta) => new { Post = post, Meta = meta });
Run Code Online (Sandbox Code Playgroud)
我是新手使用LINQ,所以我不确定这个查询是否正确.
在显式vs隐式内连接中是否存在效率差异?例如:
SELECT * FROM
table a INNER JOIN table b
ON a.id = b.id;
Run Code Online (Sandbox Code Playgroud)
与
SELECT a.*, b.*
FROM table a, table b
WHERE a.id = b.id;
Run Code Online (Sandbox Code Playgroud)