使用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,
MyProductId
是135
因此它与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 ?