C# lambda Join & Update



我使用实体框架。类List是

class List
{
public string cid { get; set; }
public string type{ get; set; }
public string memo{ get; set; }
public DateTime sdate{ get; set; }
}

,数到50左右。

我想加入关于成员的表。会员的栏目有:id, cid,姓名、地址

var result =
thelist.Where(w => !string.IsNullOrWhiteSpace(type)).Join(db.members,list => list.cid,member => member,(list,member) => list).ToList();

→不确定是否有效

我想要得到表成员中cid的列表记录。用成员的名字更新列表的备忘录。

我可以用lambda吗??

如果您要求避免SQL,当然可以。但是您需要以特定的方式设置表关系。

应该在类中定义键和外键:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
public class Parent
{
[Key]
public string cid { get; set; }
public string type{ get; set; }
public string memo{ get; set; }
public DateTime sdate{ get; set; }
public virtual ICollection<Members> {get;set;}
}
public class Members{
public virtual Parent Parent {get;set;}
[Key]
public int id {get;set;}
[ForeignKey("Parent")] //This should match database table name
public string cid {get;set;}
//...other data types
}

你应该在变量名、可空性(如果你在数据库中有一个可空的变量,确保它在类中是可空的)方面准确地镜像数据库:Int ?),外键应该匹配。

一旦你以一种整洁的方式设置了一切,那么将子表的值连接到父表就很简单了:

//...
List<Parent> resultsWithChildren = _dbContext.Parent.Where(x => x.cid == "someid").Include(x => x.Members).ToList();

通过添加"Include"EntityFramework将加载所有它能自动找到链接的表,这就是为什么建立关系是很重要的。

然后您可以简单地遍历数据。每个'resultWithChildren'变量都有一个相应的'Members'列表。

最新更新