使用entity framework在列表中获取行索引

我的列表中有5个数据。

我的列表

所以我想知道,我怎样才能选择Id的行号?

var MyProductId= 135; var SelectedDataRowNumber = context.SP_MyList.ToList() .Where(s=>s.Id==MyProductId) .FirstOrDefault(); 

例如,My List有5个数据如下,

 Id-Name 6,Computer 135,KeyBoard 68,Mouse 98,Telephone 213,Laptop, 

MyProductId135因此它与Keyboard匹配。行数(索引)必须为“1”,因为0是计算机。

我怎样才能选择Id的行数(索引)数?

如果列表已实现索引器,则可以通过索引直接获取元素。 您可以找到如何实现Indexer 。

另一种方式可以如Here所述 。

以上链接显示如下:

COPIED从上面链接:

 Person agedTwenty = myList.Where( x => return x.Age == 20; ).Single(); int index = myList.IndexOf(agedTwenty); 

或者

 int index = myList.Where( x => return x.Age == 20; ).Select( x => myList.IndexOf(x)).Single(); 

如果可以有多个结果,你可以这样做:

 IEnumerable allAgedTwenty = myList.Where( x => return x.Age == 20; ); IEnumerable indices = allAgedTwenty.Select( x => myList.IndexOf(x) ); 

第一种情况只能得到一个int,第二种情况会给你一个int列表。

如果你想要计数你需要groupBy

 var SelectedDataRowNumber = context.SP_MyList.ToList() .GroupBy(x = x.Id) .Where(s=>s.Key == MyCustomerId ) .Select(x => new {Id = x.Key, Count = x.Count()}); 

这为您提供输出

 Id = 135 Count = 3 //depending on the actual count 

替代解决方案,如果要输出id,name和count:

 //"items" is my custom list I created to reflect your data var SelectedDataRowNumber = from x in items group x by new {x.Id, x.Name} into g where g.Key.Id == 135 select new { ID = g.Key.Id, Name = g.Key.Name, Count = g.Count() }; 

关于你的评论:这是你期望的结果: http : //abload.de/img/so1j5rta.jpg ?