相关疑难解决方法(0)

如何使用linq扩展方法执行左外连接

假设我有一个左外连接:

from f in Foo
join b in Bar on f.Foo_Id equals b.Foo_Id into g
from result in g.DefaultIfEmpty()
select new { Foo = f, Bar = result }
Run Code Online (Sandbox Code Playgroud)

如何使用扩展方法表达相同的任务?例如

Foo.GroupJoin(Bar, f => f.Foo_Id, b => b.Foo_Id, (f,b) => ???)
    .Select(???)
Run Code Online (Sandbox Code Playgroud)

c# lambda linq-to-sql

255
推荐指数
5
解决办法
17万
查看次数

Linq to Sql:多个左外连接

我在使用LINQ to SQL找出如何使用多个左外连接时遇到了一些麻烦.我理解如何使用一个左外连接.我正在使用VB.NET.下面是我的SQL语法.

T-SQL

SELECT
    o.OrderNumber,
    v.VendorName,
    s.StatusName
FROM
    Orders o
LEFT OUTER JOIN Vendors v ON
    v.Id = o.VendorId
LEFT OUTER JOIN Status s ON
    s.Id = o.StatusId
WHERE
    o.OrderNumber >= 100000 AND
    o.OrderNumber <= 200000
Run Code Online (Sandbox Code Playgroud)

t-sql linq vb.net left-join linq-to-sql

159
推荐指数
4
解决办法
10万
查看次数

将SQL转换为Linq左连接,返回null

如何将此SQL正确转换为linq

select  t1.ProgramID
from Program t1 LEFT JOIN ProgramLocation t2 ON  t1.ProgramID = t2.ProgramID 
where t2.ProgramID IS NULL
Run Code Online (Sandbox Code Playgroud)

我尝试过,但它不起作用

var progy = (
             from u in db.ProgramLocations join b in db.Programs
             on u.ProgramID equals b.ProgramID into yG 
             from y1 in yG.DefaultIfEmpty() 
             where u.ProgramID == null
             where u.ProgramID == null 
             select u.ProgramID
            ).ToList();
Run Code Online (Sandbox Code Playgroud)

谢谢

.net c# sql linq

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

即使外键为 NULL 也加入两个数据表

我的应用程序中有 2 个数据表。第一个 DataTable 被调用Table1,看起来像这样

-------------------------------------
| Key | Column1 | Column2 | Foreign |
|-----------------------------------|
|  0  | dsfsfsd | sdfsrer |    1    |
|-----------------------------------|
|  1  | dertert | qweqweq |   NULL  |
|-----------------------------------|
|  2  | prwersd | xzcsdfw |    3    |
-------------------------------------
Run Code Online (Sandbox Code Playgroud)

第二个被调用Table2,看起来像这样

----------------------------------------
|  Key   | Column3 | Column4 | Column5 |
|--------------------------------------|
|   1    | dsfsfsd | sdfsrer | fghfghg |
|--------------------------------------|
|   3    | prwersd | xzcsdfw | nbmkuyy …
Run Code Online (Sandbox Code Playgroud)

c# linq

2
推荐指数
1
解决办法
1933
查看次数

在 LINQ 中使用 OR 条件进行 LEFT JOIN

我需要在 LINQ 中编写以下 T-SQL:

SELECT T1.ID, T2.Name
FROM T1
LEFT JOIN T2 ON (T1.ID = I2.ID1 OR T1.ID = T2.ID2)
Run Code Online (Sandbox Code Playgroud)

OR 连接在 LINQ 中如下所示:

T1.Join(T2, t1=>new{}, t2=>new{}, (t1,t2)=>new{ID=t1.Id, t2=t2}).Where(o=>o.Id == o.t2.Id1 || o.Id==o.t2.Id2);
Run Code Online (Sandbox Code Playgroud)

但该查询是 INNER JOIN,而不是 LEFT JOIN。某种 LEFT JOIN 看起来像这样:

T1.GroupJoin(T2, t1 => t1.Id, t2 => t2.Id1, (t1, t2) => new { Id = t1.Id, Name1 = t2.Select(t => t.Name) }).DefaultIfEmpty()
  .GroupJoin(T2, o => o.Id, t2 => t2.Id2, (i, j) => new { Id = i.Id, Name1 = i.Name1, …
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-sql

0
推荐指数
1
解决办法
2628
查看次数

Linq,join和null如何检查值

我尝试将两个集合合二为一.如果我的第二个是空的,我只需要一个空值,这是我的代码(如果com不为空则它是正确的)

    var tmp = List{ Elem {long UserID; string tmpContent} };
    var com = List{ Comment{long UserID; string Content} } ;

    var res = from t in tmp
              group t by t.UserID into g
              join c in com on g.Key equals c.UserID
              select new AnswerSet(new List<Answer>(g), c.Content);
Run Code Online (Sandbox Code Playgroud)

我想获得AnswerSet(g, Content)AnswerSet(g, null)的问题,我想,是g.Key equals c.UserID时候com是空的

c# linq windows-store-apps

0
推荐指数
1
解决办法
854
查看次数

标签 统计

c# ×5

linq ×5

linq-to-sql ×3

.net ×1

lambda ×1

left-join ×1

sql ×1

t-sql ×1

vb.net ×1

windows-store-apps ×1