如何从此列表中检索列数据

Posted

技术标签:

【中文标题】如何从此列表中检索列数据【英文标题】:How do i retrieve column data from this list 【发布时间】:2019-08-30 08:03:20 【问题描述】:

我只有保存在项目中的特定数据行的 id。我正在尝试检索要在插入语句中使用的额外数据,以记录系统上谁删除的日志。

    public static void DeleteFromClass(this Entities context, List<long> ids, string deletedBy)
    
        if (ids.Count == 0) return;

        foreach (var item in ids)
        
            var result = (from details in context.Class
                          where details.ID == item
                          select new
                          
                              id = item,
                              studNumber = details.studNumber,
                              name = details.name,
                              lastName = details.lastName,
                          ).ToList();

            var InsertQuery = "INSERT INTO  DeletedStudents (studNumber, name, lastName, DeletedBy, DeletedOn, stage) " +
                "VALUES (" + result.Where(e => e.id == item).Select(e => e.studNumber) + "," + result.Where(e => e.id == item).Select(e => e.name) + "," + result.Where(e => e.id == item).Select(e => e.lastName) + "," + deletedBy + "," + DateTime.Now + ", 1) ";                                      
        
    

【问题讨论】:

我不明白您在问什么,因为您已经在从结果集中访问属性。你到底是哪里出了问题?见How to Ask。 Var 结果包含我需要访问的属性,但是通过我插入的值,我的结果返回空白。我不知道出了什么问题。除了Linq,就没有更简单的方法了吗? 【参考方案1】:

这段代码并不像你想的那样。

result.Where(e => e.id == item).Select(e => e.studNumber)

^ 该代码返回一个表示零个或多个记录的对象。您可能不是想将其连接为字符串。

如果你想从单个记录中获取单个字符串,你可以这样做:

result.Single(e => e.id == item).studNumber

如果您认为返回的记录可能不止一条,也许您只想使用第一条:

result.First(e => e.id == item).studNumber

如果你不确定是否有记录,你可以这样做:

result.FirstOrDefault(e => e.id == item)?.studNumber ?? ""

或者,如果您想为每条记录添加一个插入语句:

string[] sql = result.Select( e => "INSERT blah blah VALUES (" + e.studNumber + ").ToArray();

说了这么多,你可能是should not concatenate strings to form SQL statements。您应该使用带有强类型参数的存储过程。

或者更好的是,不要混合和匹配 EF 和 SQL。改为使用 EF 进行插入。

【讨论】:

太棒了!谢谢@约翰。我会记住这一点以供将来参考。

以上是关于如何从此列表中检索列数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用psql中表中的列列表检索数据

如何从地图列表中逐列检索飞镖中的数据?

Pandas:如何从给定(行,列)对列表的 DataFrame 中检索值?

国标| Python:如何检索表中所有列的数据类型?

本机查询 - 如何仅从数据库中检索实体的特定列

如何从此 xml 文档中提取数据