簡體   English   中英

ASP.net c#LINQ for循環

[英]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);
}

q.LabelID不起作用,我不能真正使用foreach因為我必須在每次迭代時調用一個新的ArtworkLabel。

這可行:

var queryList = q.ToList();
for (int i = 0; i < queryList.Count; i++)
{
    this.Labels[i] = new ArtworkLabel(queryList[i].LabelID);
}

您也可以直接從查詢中進行投影:

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();

你可能會這樣做,對吧?

ArtworkingDataContext dc = new ArtworkingDataContext();

this.Labels = 
    from label in dc.tblArtworkLabels 
    where label.templateID == this.ID
    select new ArtworkLabel(label.ID).ToArray();

您應該能夠在一個linq語句中完成所有操作。

ArtworkingDataContext dc = new ArtworkingDataContext();
this.Labels = (from Labels in dc.tblArtworkLabels where Labels.templateID == this.ID select new ArtworkLabel(Labels.ID)).ToArray();

我最近嘗試了這個,一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM