Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体读取行值_C#_Wpf - Fatal编程技术网

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()