将索引字段添加到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;
}