C# 动态选择并更新LINQ结果集中的列值

C# 动态选择并更新LINQ结果集中的列值,c#,asp.net,linq-to-sql,dynamic-linq,C#,Asp.net,Linq To Sql,Dynamic Linq,我有一个场景,其中存在一个LINQ结果集;我使用了以下查询 var stockDetails = from d in db.BloodBanks where d.bbUserName == Session["username"].ToString() select d; 现在我想使用这个结果集并更新列的值。正在通过字符串变量动态选择列 我尝试使用的代码是: foreach (BloodBank b in stockDe

我有一个场景,其中存在一个LINQ结果集;我使用了以下查询

var stockDetails = from d in db.BloodBanks
                   where d.bbUserName == Session["username"].ToString()
                   select d;
现在我想使用这个结果集并更新列的值。正在通过字符串变量动态选择列

我尝试使用的代码是:

foreach (BloodBank b in stockDetails)
            {
                b.<--column name from string variable--> = TextBox1.Text;
            }
foreach(库存详情中的血库b)
{
b、 =TextBox1.Text;
}

请在这里帮助我如何实现这一点。

您可以使用反射按名称获取字段,如下所示

foreach (BloodBank b in stockDetails)
{
    FieldInfo f = typeof(BloodBank).GetField("fieldName");
    if (f != null)
    {
       f.SetValue(b, TextBox1.Text);
    }
}

不,它似乎不起作用。我用包含列名的sting变量替换了
fieldName
。但是最后,
db.SubmitChanges()没有更新值。在分析值后,我发现代码
FieldInfo f=typeof(BloodBank).GetField(“fieldName”)
返回f.@Piyush@Bala中的
null
为什么要去字段,为什么不去属性并获取get方法或Set方法?坦率地说,我不知道反射。我只知道
FieldInfo
f
中返回
null
。尝试使用
PropertyInfo
但在
f.SetValue(b,TextBox.Text)行中它也要求第三个参数,如果我设置
null
则会给我一个错误,说
不能转换为null。
你能发布一点你试图设置的血库类和属性/字段吗?@Pyiush Cool,如果我可以问的话,为什么它在您的情况下不起作用?因为我想选择一个存储在字符串变量中的特定列。在您的案例中,您选择了我的数据库中不存在的
col
。实际上需要类似于
b.“dynamic\u column\u name”=TextBox1.Text
foreach (BloodBank b in db.BloodBanks.Where(d => where d.bbUserName == Session["username"].ToString())
{
    b.col = TextBox1.Text;
}