C# 使用实体读取行值
我正在创建一个饼图,其名称-值对正在从数据库中检索 如何读取行详细信息以获取值并将其存储在一个属性中C# 使用实体读取行值,c#,wpf,C#,Wpf,我正在创建一个饼图,其名称-值对正在从数据库中检索 如何读取行详细信息以获取值并将其存储在一个属性中 public override void OnApplyTemplate() { Ram.DataContext = new List<UsageRAM>() { new UsageRAM() { name = "Available" , value =/*how to get the value here*/ },
public override void OnApplyTemplate()
{
Ram.DataContext = new List<UsageRAM>()
{ new UsageRAM() { name = "Available" , value =/*how to get the value here*/ },
new UsageRAM() { name = "Used" , value =/*how to get the value here*/ }};
base.OnApplyTemplate();
}
public class UsageRAM
{
public string name { get; set; }
public double value { get; set; }
}
编辑
-对我有用的答案-
using (DB db = new DB())
{
var row = (from c in db.UsageRAMs
orderby c.UsageRamID descending
select c).First();
Ram.DataContext = new List<UsageRAM>()
{ new UsageRAM() { name = "Available" , value = row.Available},
new UsageRAM() { name = "Used" , value = row.Used }};
如果您使用的是EF,只需向项目中添加一个新模型,并在此模型中包含所需的表。然后,您可以使用新创建的Entities对象读取db值,如下所示:
var Rows = context.YourTableName.Where(YourCondition).ToArray();
然后,可以使用foreach或其他方法迭代Rows集合
如果您需要从一行读取值,您可能希望使用First而不是上面的Where。这将返回一个对象,其属性将映射到您的db字段,并且可以直接在您在问题中发布的示例代码中指定
范例
假设您的模型的实体类名为MyEntities,它包含表UsageRam,该表有两个可用字段并已使用。然后将采用以下代码:
using(MyEntities e = new MyEntities)
{
var Row = e.MyTable.First(x => x.UsageRamID = **[ID]**);
MessageBox.Show("Available=" + Row.Available.ToString() + ",Used=" + Row.Used.ToString();
}
我刚刚在消息框中显示了值,您可以将它们分配给您想要的任何对象
另一个例子
谢谢你的回复。我只使用EF。。但我不知道如何迭代。请给我举一个小小的例子,这将有助于我进一步研究。谢谢你没有提供任何关于你的模型、涉及的表格、PK等的信息。我在上面发布了一个小例子,希望你能从那里继续。谢谢。这是我的表看起来如何,总是考虑使用左边的绿色复选标记来显示你的感激,如果答案帮助你。当然,为什么不呢。唯一的区别是,如果您有一个列表,我假设您期望结果中有多行。在这种情况下,您应该使用Where而不是First来获取结果,然后使用一个简单的循环来迭代结果,添加或修改列表中的对象,从当前行的属性中为它们赋值。我将发布另一个示例。
using(MyEntities e = new MyEntities)
{
var Rows = e.MyTable.Where(x => x.UsageRamID > 10 && x.UsageRamID < 20);
foreach(var Row in Rows)
MessageBox.Show("Available=" + Row.Available.ToString() + ",Used=" + Row.Used.ToString();
}
db.RamUsage.OrderByDescending(x => x.RamUsageID).First()