Linq用Lambda计数左联接

问题描述 投票:0回答:1

我有一个Users和一个Shipments表。 Shipments表具有属性Received。我想编写代码以使用linq获取所有已收到其所有货件(Users)的所有received == true

[Users

public Guid Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public bool NeedsFilament { get; set; }
public ICollection<Shipment> Shipments { get; set; }

Shipments

public Guid Id { get; set; }
public int Quantity { get; set; }
public DateTime DateShipped { get; set; }
public bool Recieved { get; set; }
public Guid UserId { get; set; } 
public User User { get; set; }

[到目前为止,我在SQL查询中所做的不算Received中的Shipments道具,而只是获得了区别(这是错误的)

SELECT DISTINCT
    [FirstName]
    ,[LastName]
    ,[Username]
    ,[Address]
    ,[LatestShippedDate]
    ,[PrinterActive]
    ,[ProductionDate]
    ,[ShippedQuantity]
    ,[Email]
    ,[PhoneNumber]
    ,[NeedsFilament]
    ,[FilamentTrackingNumber]
    ,[SentFilamentDate]
    ,[LatestShippedQuantity]
FROM 
    [dbo].[Users]
LEFT JOIN 
    Shipments ON Shipments.UserId = Users.Id
WHERE 
    Shipments.Recieved = 1 
    AND Users.NeedsFilament = 1
linq lambda count linq-to-sql
1个回答
0
投票

Hello @ Pt4r,下面的Linq语句将完成您想要的操作,下面的行解析users_table并比较两个表的每个元素,并保留那些语句返回true的元素

var newUserTbl = users_table.Where(user=>Shipments.UserId==user.id && Shipments.Recieved).ToList();
© www.soinside.com 2019 - 2024. All rights reserved.