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

时间:2009-02-25 10:35:35

标签: c# linq

我通过LINQ获取正在运行的进程列表。

我想要的两个属性是“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 个答案:

答案 0 :(得分:5)

select new { p.ProcessName, ProcessId = p.WorkingSet64 };

答案 1 :(得分:2)

var theProcesses = from p in Process.GetProcesses()
                   orderby p.WorkingSet64 descending
                   select new { p.ProcessName, ProcessId = p.WorkingSet64 };

当你创建一个匿名对象时,如果你提供属性名称,它将使用它,否则它将使用你选择的属性的名称。