0
private void GetRecDept() 
{
    cmbDept.Items.Clear();
    ListViewMeasurements.Items.Clear();
    SFCDataContext SFC = new SFCDataContext();
    try
    {
        var query = (from i in SFC.Systems_SettingsMeasurements
                     orderby i.RowID descending
                     select new { 
                        RowID = i.RowID,
                        Measure = i.Measurement,
                        Target = i.TargetPercentage,
                        Dept = i.Department_ID                                
                     });
        foreach (var w in query) 
        {
           ListViewItem List = new ListViewItem(w.RowID.ToString());
           List.SubItems.Add(w.Measure);
           List.SubItems.Add(string.Format("{0:n2}", w.Target));
           List.SubItems.Add(w.Dept);
           ListViewMeasurements.Items.AddRange(new ListViewItem[] { List });
        }
        foreach (var r in query) 
       {
            cmbDept.Items.Add(r.Dept.Distinct());
       }
   }
   catch (Exception ex)
   { 
       MessageBox.Show(ex.Message.ToString()); 
   }
}                

の出力は、リストビューとは異なり、cmbDept.Items.Add()この種の文字列 System.Linq.Enumerable+<DistinctIterator>d__7a1[System.Char]` を示しています。コンボ ボックスにあるユーザーが読み取り可能な文字列型に変換するにはどうすればよいですか。

4

1 に答える 1

2

これを試して:

var distinctDept = query.Select(x=>x.Dept).Distinct().ToArray();
cmbDept.Items.AddRange(distinctDept)

あなたの問題についてDeptは、文字列ですcmbDept.Items.Add(r.Dept.Distinct());。追加されたアイテムを使用するIEnumerable<char>と、もちろん期待どおりに表示できません。表示するToString()前に が呼び出され、IEnumerable<char>説明したとおりの結果が得られます。

于 2013-10-23T08:37:11.980 に答える