将索引字段添加到LINQ列表<;T>;结果使用C#

将索引字段添加到LINQ列表<;T>;结果使用C#,c#,linq,C#,Linq,我用的是通用列表。例如(具有某些属性): 因此,在我的检索查询中,我经常编写以下内容: _grouppedResto.Select((value, index) => new { index = index, value = value }); dgvHeader.DataSource = _grouppedResto; 但现在它在索引列上显示为空白。我想得到这样的东西: 这是关于datagrid的全部内容: this.dgvHeader.AllowUserToAddRows

我用的是通用列表。例如(具有某些属性):

因此,在我的检索查询中,我经常编写以下内容:

_grouppedResto.Select((value, index) => new { index = index, value = value });
dgvHeader.DataSource = _grouppedResto;
但现在它在索引列上显示为空白。我想得到这样的东西:

这是关于datagrid的全部内容:

   this.dgvHeader.AllowUserToAddRows = false;
            this.dgvHeader.AllowUserToDeleteRows = false;
            this.dgvHeader.AllowUserToResizeRows = false;
            this.dgvHeader.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            this.dgvHeader.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
            this.FECRGV,
            this.TDORGV,
            this.NDORGV,
            this.RUCCLI,
            this.RAZCLI,
            this.VVTRGVS,
            this.IGVRGVS,
            this.TOTRGVS,
            this.TCARGV,
            this.VVTRGVD,
            this.IGVRGVD,
            this.TOTRGVD});
            this.dgvHeader.Location = new System.Drawing.Point(12, 128);
            this.dgvHeader.Name = "dgvCACD";
            this.dgvHeader.Size = new System.Drawing.Size(1265, 611);
            this.dgvHeader.TabIndex = 13;
            **dgvHeader.AutoGenerateColumns = false;**

如何解决此问题?

看起来您需要将_grouppedResto分配给一个匿名类型,如下所示:

var yourSequence = _groupedResto.Select((value, index) => new { index = index, value = value });
dgvHeader.DataSource = yourSequence;
我很乐意为您提供任何细节。
祝你好运,希望这有帮助:)

要将索引与列表元素的属性相结合,需要将select语句更改为如下内容:

_grouppedResto.Select(
  (value, index) => new {
    index = index, propertyA = value.propertyA, propertyB = value.propertyB
  }
);

我用这种方法来解决这个问题。。。(我认为这是最糟糕的方式,因为您必须修改域类)

最后:

var yourSequence = _grouppedResto.
                    Select((value, index) => new RGVCAFAC(value) { index = index+1, rgvcafac = value }).ToList(); //need to begin on 1 not on 0
                dgvCabecera.DataSource = yourSequence;

我不认为自己是新手,但我不太重视这个问题。你能澄清一下吗?是的,我在这一点上也摸不着头脑…我在这里的任何代码中都没有看到任何列表。“randomList”是一个不好的类名,有两个原因:它的大写不正确,如果一个类没有实现IList接口,就不应该将它命名为“SomethingList”(我想FxCop会抱怨这个)。正如其他人所说,这个问题毫无意义。因为我们不知道数据是如何绑定的,所以不可能在这里说太多。从dgv_头判断,我有理由猜测您正在使用WinForms。如果是这样,请显示与
dgvHeader
初始化相关的所有代码(包括
InitializeComponent
,以及构造函数和其他地方的任何代码)。哦,我的糟糕!,为什么当我编辑某个东西,然后我尝试再次编辑它时,我丢失了最后的更改:(我认为如果你这样做,你需要在关键字“new”之后指定对象)原因属性是不会显示…感谢您分享您的想法,顺便说一句,datagrid autogeneratecolumns属性设置为false,因此datagrid无法生成列。是的,没问题。总是有一些小烦恼会让我感到困惑。很高兴听到您发现了问题。如果有人找到其他方法,请不要怀疑发布它,我可以把它标记为一个答案,对于其他有相同线索的人谢谢你的回答,我已经在使用这个片段了,但我正在寻找LINQ解决方案。
public class RGVCAFAC
    {
        public int index { get; set; }
        public string CODEAUX { get; set; }

        public string FECRGV { get; set; }
        public string TDORGV { get; set; }
        public string MONRGV { get; set; }
        public string NDORGV { get; set; }
        public string RUCCLI { get; set; }
        public string RAZCLI { get; set; }
        public string CDCRGV { get; set; }
        public string TERRGV { get; set; }
        public string PDSRGV { get; set; }
        public double VVTRGVS { get; set; }
        public double IGVRGVS { get; set; }
        public double TOTRGVS { get; set; }
        public string TCARGV { get; set; }
        public double VVTRGVD { get; set; }
        public double IGVRGVD { get; set; }
        public double TOTRGVD { get; set; }
        public string PACEST { get; set; }

        public string CODUNI { get; set; }

        public string DIRCLI { get; set; }
        public string TELCLI { get; set; }
        public int PFLAG { get; set; }


        //I have to add the following, so generators are useless :(


        public RGVCAFAC()
        {
        }

        public RGVCAFAC(RGVCAFAC x)
        {
            this.CODEAUX = x.CODEAUX;
            this.FECRGV = x.FECRGV;
            this.TDORGV = x.TDORGV;
            this.MONRGV = x.MONRGV;
            this.RUCCLI = x.RUCCLI;
            this.RAZCLI = x.RAZCLI;
            this.CDCRGV = x.CDCRGV;
            this.TERRGV = x.TERRGV;
            this.PDSRGV = x.PDSRGV;
            this.VVTRGVS = x.VVTRGVS;
            this.IGVRGVS = x.IGVRGVS;
            this.TOTRGVS = x.TOTRGVS;
            this.TCARGV = x.TCARGV;
            this.VVTRGVD = x.VVTRGVD;
            this.IGVRGVD = x.IGVRGVD;
            this.TOTRGVD = x.TOTRGVD;
            this.PACEST = x.PACEST;
            this.CODUNI = x.CODUNI;
            this.DIRCLI = x.DIRCLI;
            this.TELCLI = x.TELCLI;
            this.PFLAG = x.PFLAG;
        }
    }
var yourSequence = _grouppedResto.
                    Select((value, index) => new RGVCAFAC(value) { index = index+1, rgvcafac = value }).ToList(); //need to begin on 1 not on 0
                dgvCabecera.DataSource = yourSequence;
int theIndex = 1;

foreach(var x in _grouppedResto)
{
  x.index = theIndex;
  theIndex += 1;
}