gpt4 book ai didi

c# - 将属性传递给 C#、EF 中的函数

转载 作者:行者123 更新时间:2023-11-30 23:03:54 25 4
gpt4 key购买 nike

我有几种具有共同模式的方法,我想编写一个通用函数,将列名作为输入并给出相同的结果。

private void Query138()
{
var products = (from p in _context.Products
where p.Manufacturer == null
select p);
foreach (var productItem in products)
{
productItem.Manufacturer = string.Empty;
_context.UpdateProduct(productItem);
}

}

private void Query139()
{
var products = (from p in _context.Products
where p.ModelNumber == null
select p);
foreach (var productItem in products)
{
productItem.ModelNumber = string.Empty;
_context.UpdateProduct(productItem);
}

}

我想编写一个通用函数,将列名作为上述方法的输入。

例子:

 private void Update(Expression<Fun<T,string>> pred = null)
{
//use the input column to select the data

//use the input column to set the new value and update

}

最佳答案

您将需要两个表达式来实现此目的。一个获取您的值,另一个设置它。

private void Update(Expression<Func<T, string>> getter, Expression<Action<T, string>> setter)
{
var products = (from p in _context.Products
where getter(p) == null
select p);
foreach (var productItem in products)
{
setter(productItem, string.Empty);
_context.UpdateProduct(productItem);
}
}

这样你就可以使用 i => i.[Your Attribute](i, o) => i.[Your Attribute] = o 来调用你的功能:

Update(i => i.[Your Attribute],(i, o) => i.[Your Attribute] = o); 

或者在你的情况下:

Update(i => i.Manufacturer,(i, o) => i.Manufacturer = o); 
Update(i => i.ModelNumber,(i, o) => i.ModelNumber = o);

关于c# - 将属性传递给 C#、EF 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49692657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com