ASP.net c # LINQ для цикла - PullRequest
       6

ASP.net c # LINQ для цикла

1 голос
/ 22 марта 2011
// 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 на каждой итерации.

Ответы [ 5 ]

1 голос
/ 22 марта 2011

Вы должны быть в состоянии сделать все это одним оператором linq.

ArtworkingDataContext dc = new ArtworkingDataContext();
this.Labels = (from Labels in dc.tblArtworkLabels where Labels.templateID == this.ID select new ArtworkLabel(Labels.ID)).ToArray();
1 голос
/ 22 марта 2011

Попробуй так:

this.Labels = q.Select(x => new ArtworkLabel(x.LabelID)).ToArray();
1 голос
/ 22 марта 2011

Вы могли бы просто сделать это, верно?

ArtworkingDataContext dc = new ArtworkingDataContext();

this.Labels = 
    from label in dc.tblArtworkLabels 
    where label.templateID == this.ID
    select new ArtworkLabel(label.ID).ToArray();
1 голос
/ 22 марта 2011

Это будет работать:

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();
0 голосов
/ 14 сентября 2017

Я пытался это недавно, linq для цикла .. это то, что я придумал ..

        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] };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...