有没有一种方法可以使用LINQ更新通用列表,而不是删除列表的成员并将其添加回去?

克莱·香农(B. Clay Shannon)

LINQ是否允许Upsert类型的操作,或用于更新现有记录?我有以下代码,该代码从列表中获取“记录”,更新它的某些部分,然后删除原始记录,然后添加回此更新的记录:

. . .
Student student = LINQ2ObjectsCode.GetStudentForId(ah.StudentID_FK);
// Update several members of the Students list...
student.WeekOfLastAssignment = _currentWeek;
int nextTalkTypeId = AYttFMConstsAndUtils.GetNextTalkIDForBrothers(ah.StudentID_FK, 1); 
student.RecommendedNextTalkTypeID = nextTalkTypeId;
student.NextCounselPoint = LINQ2ObjectsCode.GetNextCounselPoint(nextTalkTypeId, student.NextCounselPoint);
// ...then update that record by first deleting the old one...
AYttFMConstsAndUtils.StudentsList.RemoveAll(x => x.StudentID == ah.StudentID_FK);
// ...and then adding back the updated one:
AYttFMConstsAndUtils.StudentsList.Add(student);
. . .

public static Student GetStudentForId(int _studentId)
{
    return AYttFMConstsAndUtils.StudentsList.SingleOrDefault(
        i => i.StudentID.Equals(_studentId));
}

...但是我不知道这是否是首选方法。有没有一种方法可以更新现有记录,而不是销毁记录并将其替换为新版本?我想有,但是我不知道它是如何令人费解的,它到底是更好还是只是有所不同。我将有几种类似的方法,但是我不想多次做“错”的事情。

注意:数据不是来自数据库;而是来自数据库。相反,它存储在json文件中。

拉贾·纳达尔(Raja Nadar)|

您无需再次删除和添加实体。

通常,如果列表是本地列表,则对象是按引用的。因此,您可以查询对象,并就地修改其属性,并且已经更新了真实对象的字段。

对于LINQ2SQL或EF或ORM实体,每当您获取一条记录时,上下文管理器就会跟踪该实体的状态。您可以修改其属性,并在上下文中执行SubmitChanges()或SaveChanges(),记录将自动更新。

请注意,您需要处于上下文范围内才能进行访存,修改某些属性并保存更改。如果在获取实体后丢失了上下文,则仍然可以轻松地修改实体,只需要再次附加对象并保存上下文即可。

让我知道您是否需要这样做的LINQ2SQL或EF实例。(附加实体)

例如

using (var context = new YourDbContext())
{
 Student student = LINQ2ObjectsCode.GetStudentForId(context, ah.StudentID_FK);
 // Update several members of the Students list...
 student.WeekOfLastAssignment = _currentWeek;
 int nextTalkTypeId =  
 AYttFMConstsAndUtils.GetNextTalkIDForBrothers(ah.StudentID_FK, 1); 
 student.RecommendedNextTalkTypeID = nextTalkTypeId;
 student.NextCounselPoint = LINQ2ObjectsCode.GetNextCounselPoint(nextTalkTypeId,  
 student.NextCounselPoint);

 context.SaveChanges(); // ef
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有一种方法可以使我的类接受列表中的多个对象,而不是使用Children并逐个添加?

来自分类Dev

有没有一种方法可以使用索引对列表列表进行排序?

来自分类Dev

有没有一种方法可以使Python列表需要某个对象?

来自分类Dev

有没有一种方法可以使for循环沿列表的元素重复?

来自分类Dev

有没有一种方法可以使html列表像这样

来自分类Dev

Gson:有没有一种方法可以使用GSON解析特定的内部JSON列表?

来自分类Dev

有没有一种方法可以使用BeanUtils.copyProperties将Set映射到列表?

来自分类Dev

有没有一种方法可以使用NEWID函数生成GUID的列表?

来自分类Dev

有没有一种方法可以使用VueJs将列表分为几列?

来自分类Dev

有没有一种方法可以使用import获取软件包列表?

来自分类Dev

有没有一种方法可以使用ID列表或ID数组查询MongoDB Rest API

来自分类Dev

有没有一种方法可以使用NEWID函数生成GUID的列表?

来自分类Dev

有没有一种方法可以使用ArrayAdapter更新多个TextView?

来自分类Dev

有没有一种方法可以使用文本框和按钮添加到组合框列表?

来自分类Dev

有没有一种方法可以遍历列表并将所有内容转换为整数?

来自分类Dev

有没有一种方法可以使有序列表中的数字加粗?

来自分类Dev

有没有一种方法可以使列表中的某些元素无法通过angular * ngFor看到?

来自分类Dev

有没有一种方法可以使用流API将对象列表“扩展”为更大的列表?

来自分类Dev

有没有一种方法可以使用System.Linq.Dynamic查询类型

来自分类Dev

有没有一种方法可以使用将<string,string>添加到字典的方法?

来自分类Dev

有没有一种方法可以使用名称列表I / O功能读取具有可分配组件的派生类型?

来自分类Dev

有没有一种方法可以使用Entity Framework获取C#中所有存储过程名称的列表?

来自分类Dev

有没有一种方法可以使用名称列表I / O功能来读取具有可分配组件的派生类型?

来自分类Dev

有没有一种方法可以使用谓词在Sqlite-Net中删除?

来自分类Dev

有没有一种方法可以使用pyvmomi API删除来宾虚拟机?

来自分类Dev

有没有一种方法可以使用qbsdk和qbxml从Quickbooks脱机删除客户?

来自分类Dev

有没有一种方法可以从mongoengine中存储的ListField中自动删除列表元数据?

来自分类Dev

有没有一种方法可以根据先前号码的条件来删除列表中的号码?

来自分类Dev

有没有一种方法可以使用Volley将TAG添加到NetworkImageView

Related 相关文章

  1. 1

    有没有一种方法可以使我的类接受列表中的多个对象,而不是使用Children并逐个添加?

  2. 2

    有没有一种方法可以使用索引对列表列表进行排序?

  3. 3

    有没有一种方法可以使Python列表需要某个对象?

  4. 4

    有没有一种方法可以使for循环沿列表的元素重复?

  5. 5

    有没有一种方法可以使html列表像这样

  6. 6

    Gson:有没有一种方法可以使用GSON解析特定的内部JSON列表?

  7. 7

    有没有一种方法可以使用BeanUtils.copyProperties将Set映射到列表?

  8. 8

    有没有一种方法可以使用NEWID函数生成GUID的列表?

  9. 9

    有没有一种方法可以使用VueJs将列表分为几列?

  10. 10

    有没有一种方法可以使用import获取软件包列表?

  11. 11

    有没有一种方法可以使用ID列表或ID数组查询MongoDB Rest API

  12. 12

    有没有一种方法可以使用NEWID函数生成GUID的列表?

  13. 13

    有没有一种方法可以使用ArrayAdapter更新多个TextView?

  14. 14

    有没有一种方法可以使用文本框和按钮添加到组合框列表?

  15. 15

    有没有一种方法可以遍历列表并将所有内容转换为整数?

  16. 16

    有没有一种方法可以使有序列表中的数字加粗?

  17. 17

    有没有一种方法可以使列表中的某些元素无法通过angular * ngFor看到?

  18. 18

    有没有一种方法可以使用流API将对象列表“扩展”为更大的列表?

  19. 19

    有没有一种方法可以使用System.Linq.Dynamic查询类型

  20. 20

    有没有一种方法可以使用将<string,string>添加到字典的方法?

  21. 21

    有没有一种方法可以使用名称列表I / O功能读取具有可分配组件的派生类型?

  22. 22

    有没有一种方法可以使用Entity Framework获取C#中所有存储过程名称的列表?

  23. 23

    有没有一种方法可以使用名称列表I / O功能来读取具有可分配组件的派生类型?

  24. 24

    有没有一种方法可以使用谓词在Sqlite-Net中删除?

  25. 25

    有没有一种方法可以使用pyvmomi API删除来宾虚拟机?

  26. 26

    有没有一种方法可以使用qbsdk和qbxml从Quickbooks脱机删除客户?

  27. 27

    有没有一种方法可以从mongoengine中存储的ListField中自动删除列表元数据?

  28. 28

    有没有一种方法可以根据先前号码的条件来删除列表中的号码?

  29. 29

    有没有一种方法可以使用Volley将TAG添加到NetworkImageView

热门标签

归档