如何做Linq查询更新

时间:2018-01-04 00:48:09

标签: c# entity-framework linq lambda

我有以下方法来返回两个实体的数据。

public List<Object> GetDados()
{
    var sendFilter = new Filter<MessageSent>();
    //employeeFilter.Add(x => x.Name, name);
    sendFilter.Add(x => x.MessageSentSeq, ID_GROUP_SEND);
    // You can add more filters

    MessageSentService svc = new MessageSentService();
    var messages = svc.Find(sendFilter).ToList();

    var employees = new EmployeeService().GetAll();

    var query =
        from employee in employees
        join message in messages
        on employee.EmployeeId equals message.EmployeeId
        select new
        {
            MessageSentId = message.MessageSentId,
            //EmployeeId = message.EmployeeId,
            //MessageSentSeq = message.MessageSentSeq,
            Name = employee.Name,
            Surname = employee.Surname,
            Mobile = employee.Mobile,
            Email = employee.Email,
            Status = "N"
        };
    return query.ToList<Object>();
}

呼叫

ILog log = LogManager.GetLogger(typeof(Form));
List<Object> Send;

Send = GetDados();
gvSent.DataSource = Send;

在发送时,我想更新对象 var query内部的记录,该记录依次填充我的网格

在我使用正确发送的项目更新数据库的所有内容结束时,我需要设置 status字段S

1 个答案:

答案 0 :(得分:0)

因为您的函数返回List<Object>,所以如果不使用Reflection或其他一些重要措施,您将无法修改这些属性。如果您计划对此数据进行修改,则需要确保输入的数据已被输入。首先定义一个简单的类:

class Dado
{
    public string MessageSentId { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }
    public bool Mobile { get; set; }
    public string Email { get; set; }
    public string Status { get; set; }
}

...然后修改你的函数以返回这种类型的实例:

public List<Dado> GetDados()
{
    var sendFilter = new Filter<MessageSent>();
    //employeeFilter.Add(x => x.Name, name);
    sendFilter.Add(x => x.MessageSentSeq, ID_GROUP_SEND);
    // You can add more filters

    MessageSentService svc = new MessageSentService();
    var messages = svc.Find(sendFilter).ToList();

    var employees = new EmployeeService().GetAll();

    return (
        from employee in employees
        join message in messages
        on employee.EmployeeId equals message.EmployeeId
        select new Dado
        {
            MessageSentId = message.MessageSentId,
            //EmployeeId = message.EmployeeId,
            //MessageSentSeq = message.MessageSentSeq,
            Name = employee.Name,
            Surname = employee.Surname,
            Mobile = employee.Mobile,
            Email = employee.Email,
            Status = "N"
        }
    ).ToList();
}

现在,在填充网格后的代码中可以执行以下操作:

foreach (var dado in Send) {
    dado.Status = "S";
}