C# lambda 加入和更新
Posted
技术标签:
【中文标题】C# lambda 加入和更新【英文标题】:C# lambda Join & Update 【发布时间】:2021-08-28 00:32:04 【问题描述】:我使用实体框架。 类列表是
class List
public string cid get; set;
public string type get; set;
public string memo get; set;
public DateTime sdate get; set;
数一下大约 50 个。
我想加入关于成员的表格。 成员的专栏是: 身份证,身份证,姓名,地址
var result =
thelist.Where(w => !string.IsNullOrWhiteSpace(type)).Join(db.members,list => list.cid,member => member,(list,member) => list).ToList();
-> 不确定是否有效。
我想获取表成员中 cid 的列表记录。 并用成员的名字更新列表的备忘录。
我可以使用 lambda 吗??
【问题讨论】:
你真的不应该修改 lambda 中的东西 您的代码和您对代码的描述似乎不匹配。目前还不是很清楚你要做什么。你能澄清一下吗? 如果我的加入正确无误,那就是:from w in thelist where !string.IsNullOrWhiteSpace(w.type) join m in db.members on w.cid equals m select w
。对吗?
具体是什么实体框架,什么版本?我不会调用类 List 以避免与 List[JsonProperty("sdate")]public DateTime AppointmentDate..
如果您要求避免使用 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 -> int?)准确地镜像数据库,外键应该匹配。
一旦您以一种简洁的方式设置了所有内容,就可以轻松地将子表值连接到父表:
//...
List<Parent> resultsWithChildren = _dbContext.Parent.Where(x => x.cid == "someid").Include(x => x.Members).ToList();
通过添加“包含”,EntityFramework 将加载它可以自动找到链接的所有表,这就是关系设置很重要的原因。
然后,您可以随心所欲地简单地遍历数据。每个 'resultWithChildren' 变量都会有一个对应的 'Members' 列表。
【讨论】:
以上是关于C# lambda 加入和更新的主要内容,如果未能解决你的问题,请参考以下文章