[英]ASP.net c# LINQ for loop
// Load all the links
ArtworkingDataContext dc = new ArtworkingDataContext();
var q = (from Labels in dc.tblArtworkLabels where Labels.templateID == this.ID select new { LabelID = Labels.ID });
// Create labels array
this.Labels = new ArtworkLabel[q.Count()];
for (int i = 0; i < q.Count(); i++)
{
this.Labels[i] = new ArtworkLabel(q.LabelID);
}
The q.LabelID isn't working, I can't really use a foreach because I have to invoke a new ArtworkLabel on each iteration. q.LabelID不起作用,我不能真正使用foreach因为我必须在每次迭代时调用一个新的ArtworkLabel。
This would work: 这可行:
var queryList = q.ToList();
for (int i = 0; i < queryList.Count; i++)
{
this.Labels[i] = new ArtworkLabel(queryList[i].LabelID);
}
Also you can directly project from your query: 您也可以直接从查询中进行投影:
this.Labels = dc.tblArtworkLabels
.Where( x=> x.templateId == this.Id)
.Select( x=> new ArtworkLabel(x.ID))
.ToArray();
试试这样:
this.Labels = q.Select(x => new ArtworkLabel(x.LabelID)).ToArray();
You could potentially just do this, right? 你可能会这样做,对吧?
ArtworkingDataContext dc = new ArtworkingDataContext();
this.Labels =
from label in dc.tblArtworkLabels
where label.templateID == this.ID
select new ArtworkLabel(label.ID).ToArray();
You should be able to do it all in one linq statement. 您应该能够在一个linq语句中完成所有操作。
ArtworkingDataContext dc = new ArtworkingDataContext();
this.Labels = (from Labels in dc.tblArtworkLabels where Labels.templateID == this.ID select new ArtworkLabel(Labels.ID)).ToArray();
I tried this recently, a linq for loop.. this is what I came up with.. 我最近尝试了这个,一个linq for loop ..这就是我想出的......
var query = from ii in Enumerable.Range(0, xml.AllIndexesOf("<item").Count())
where ii < xml.AllIndexesOf("<item").Count()
select new { Start = xml.AllIndexesOf("<item").ToList()[sii], Count = xml.AllIndexesOf("</item").ToList()[sii] - xml.AllIndexesOf("<item").ToList()[sii] };
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.