首页 > 解决方案 > 通过linq从一个类中获取列表以填充其他类中的taxtbox

问题描述

如何通过 LINQ 从一个表中获取特殊的 2 个属性到另一个表(以及相关文本框中的位置)?

public string srcht(ACTIVITIES sn)
    {
        db db = new db();
        var q = (from i in db.costumers.Where(i => i.id== sn.id)select i.name).ToList();
       return q.Single(); 
   }
public string srcht(ACTIVITIES sn)
    {
        db db = new db();
        var q = (from i in db.costumers.Where(i => i.id== sn.id)select i.family).ToList();
        return q.Single(); 
   }

我做了两次 linq 以在其他表中按姓名和家庭填写 2 个文本框。我可以通过一个 LINQ 来完成吗?

标签: linq

解决方案


所以你有一个in Activitysn,并且你想要所有等于 的Name和。FamilyCustomersIdsn.Id

var result = db.Customers.Where(customer => customer.Id == sn.Id)
    .Select(customer => new
    {
        Name = customer.Name,
        Family = customer.Family,
    });

换句话说:在数据库中,从客户表中,仅保留属性 ID 的值等于 sn.Id 值的客户。从剩余的客户中选择姓名和家庭的值。

如果您希望最多只有一个这样的客户(所以如果 Id 是主键),只需添加:

.FirstOrDefault();

如果您认为会有几个这样的客户,请添加:

.ToList();

结果将是一个对象,或具有两个属性的某些匿名类型的对象列表:名称和家庭。

如果您想将 Name 和 Family 混合在一个字符串序列中,我对此表示怀疑,请考虑将 Name 和 Family 放入一个数组中。结果是字符串数组的序列。要使其成为一个字符串数组,请使用 SelectMany:

var result = db.Customers
    .Where(customer => customer.Id == sn.Id)
    .Select(customer => new string[]
    {
        customer.Name,
        customer.Family,
    })
    .SelectMany(customer => customer); 

推荐阅读