gpt4 book ai didi

c# - 方法中的多个 Linq.Tables

转载 作者:太空狗 更新时间:2023-10-29 23:08:32 26 4
gpt4 key购买 nike

我创建了一些代码,将数据从 Linq.Tables (dc.GTMD_Financials) 添加到 UserControl。对于数据库中的每个条目,它都会显示一个新的用户控件。

但我想在一个方法中使用这段代码,以便在整个应用程序中重用它。我的问题是,每次我调用该方法时,我都想使用数据库中的不同表(因此 GTMD_Financials 发生了变化)

我似乎无法弄清楚,非常感谢任何形式的帮助或示例。

        int locationControl = 78;
DataClasses1DataContext dc = new DataClasses1DataContext();

dc.GTMD_Financials.ToList().ForEach(x =>
{
KPIEntrys uc = new KPIEntrys(); // UserControl

uc.KPI = x.KPI; // Add data to properties
uc.Status = x.Status.ToString();
uc.Goal = x.Goal.ToString();
uc.Currently = x.Currently.ToString();
bool checkaction = x.ShowAction == true ? uc.ShowAction = true : uc.ShowAction = false;
bool checkstats = x.ShowStats == true ? uc.ShowStats = true : uc.ShowStats = false;
bool checkstatus = x.Status < x.StatusSignal ? uc.StatusGood = true : uc.StatusGood = false;

uc.Location = new Point(21, locationControl);
this.Controls.Add(uc); // Add Control to Form

locationControl = locationControl + 34;
}
);

如果有什么不清楚的地方请告诉我。在此先感谢您的帮助。

编辑:

在我已经获得的帮助下,我似乎无法让它工作。在我已经收到的回复的帮助下,我能够对方法进行一些编辑:

    int locationControl = 78;
DataClasses1DataContext dc = new DataClasses1DataContext();

public List<Control> LoadKPIs(Table<GTMD_Financial> dbTable)
{
var controls = new List<Control>();

dbTable.ToList().ForEach(x =>
{
KPIEntrys uc = new KPIEntrys();

uc.KPI = x.KPI;
uc.Status = x.Status.ToString();
uc.Goal = x.Goal.ToString();
uc.Currently = x.Currently.ToString();
uc.ShowAction = (bool)x.ShowAction;
uc.ShowStats = (bool)x.ShowStats;
uc.StatusGood = x.Status < x.StatusSignal;
uc.Location = new Point(21, locationControl);

controls.Add(uc);

locationControl = locationControl + 34;
}
);
return controls;
}

让我重新表述一下我的问题:当我调用以下方法时如何更改类:LoadKPIs(Table<GTMD_Financial> dbTable?所以 GTMD_Finacial 发生了变化。

最佳答案

编写一个接口(interface)来定义您要使用的所有属性,并在您要使用的业务实体上实现它。

public interface IMyReusableInterface {
string KPI { get; set; }
string Status { get; set; }
// etc...
}

public partial GTMD_Financials: IMyReusableInterface {
}

现在您可以编写一个可重用的方法,它接受实现该接口(interface)的对象列表。

public List<Control> MyReusableMethod (List<IMyReusableInterface> data) {
int locationControl = 78;
var controls = new List<Control>();

foreach (var x in data) {
KPIEntrys uc = new KPIEntrys(); // UserControl

uc.KPI = x.KPI; // Add data to properties
uc.Status = x.Status.ToString();
uc.Goal = x.Goal.ToString();
uc.Currently = x.Currently.ToString();
// I've simplefied the boolean checks.
uc.ShowAction = x.ShowAction;
uc.ShowStats = x.ShowStats;
uc.StatusGood = x.Status < x.StatusSignal;
uc.Location = new Point(21, locationControl);

controls.Add(uc); // Add Control to Form

locationControl = locationControl + 34;
}

return controls;
}

并使用它:

DataClasses1DataContext dc = new DataClasses1DataContext();
this.Controls.AddRange(
MyReusableMethod(
dc.GTMD_Financials
.Cast<IMyReusableInterface>()
.ToList()
)
);

关于c# - 方法中的多个 Linq.Tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17721610/

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