1

円グラフを作成しており、その名前と値のペアがデータベースから取得されています。

ここに画像の説明を入力

値を取得して 1 つのプロパティに格納するために行の詳細を読み取る方法は?

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 }};
4

1 に答える 1

2

EF を使用している場合は、プロジェクトに新しいモデルを追加し、このモデルに必要なテーブルを含めるだけです。次に、新しく作成された Entities オブジェクトを使用して、次のように db 値を読み取ることができます。

var Rows = context.YourTableName.Where(YourCondition).ToArray();

次に、 foreach などを使用して Rows コレクションを反復処理できます。

単一の行から値を読み取る必要がある場合は、上記Firstの代わりに使用することができますWhere。これにより、プロパティが db フィールドにマップされ、質問に投稿したサンプル コードで直接割り当てることができる単一のオブジェクトが返されます。

モデルの Entity クラスの名前が MyEntities で、Available と Used の 2 つのフィールドを持つテーブル 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();
}

メッセージボックスに値を表示したところです。値を任意のものに割り当てることができます。

もう一つの例

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

例 3

更新された投稿のコードは問題ないように見えますが、データベースの設計については疑問がありますが、テーブルが RamUsageID 列にインデックス付けされている場合、パフォーマンスに大きな影響を与えることなく正しい結果が得られるはずです。私は通常、クエリよりもラムダ式を好むので、次のように記述します。

db.RamUsage.OrderByDescending(x => x.RamUsageID).First()
于 2013-03-19T09:20:35.187 に答える