代码之家  ›  专栏  ›  技术社区  ›  Edward Tanguay

如何在LINQ中重新映射属性?

  •  1
  • Edward Tanguay  · 技术社区  · 16 年前

    我想要的两个属性是“ProcessName”和“WorkingSet64”。

    但是,在我的UI中,我希望这些属性被称为“ProcessName”和“ProcessId”。

    如何将名称“WorkingSet64”重新映射到“ProcessId”?

    我做了下面要找的伪语法:

    using System.Linq;
    using System.Windows;
    using System.Diagnostics;
    
    namespace TestLinq22
    {
        public partial class Window1 : Window
        {
            public Window1()
            {
                InitializeComponent();
    
                var theProcesses =
                    from p in Process.GetProcesses()
                    orderby p.WorkingSet64 descending
                    select new { p.ProcessName, p.WorkingSet64 alias "ProcessId" };
    
                foreach (var item in theProcesses)
                {
                    TheListBox.Items.Add(item);
                }
            }
        }
    }
    
    2 回复  |  直到 16 年前
        1
  •  5
  •   Mehrdad Afshari    16 年前
    select new { p.ProcessName, ProcessId = p.WorkingSet64 };
    
        2
  •  2
  •   Aaron Powell    16 年前
    var theProcesses = from p in Process.GetProcesses()
                       orderby p.WorkingSet64 descending
                       select new { p.ProcessName, ProcessId = p.WorkingSet64 };
    

    当您创建匿名对象时,如果您提供了属性名称,它将使用该名称,否则它将使用您从中选择的属性名称。