C# 使用实体框架获取列表中的行索引
我的列表中有5个数据 MyList 所以我想知道,我怎样才能得到所选Id的行号C# 使用实体框架获取列表中的行索引,c#,entity-framework,C#,Entity Framework,我的列表中有5个数据 MyList 所以我想知道,我怎样才能得到所选Id的行号 var MyProductId= 135; var SelectedDataRowNumber = context.SP_MyList.ToList() .Where(s=>s.Id==MyProductId) .FirstOrDefault(); 例如,, 我的列表有5
var MyProductId= 135;
var SelectedDataRowNumber = context.SP_MyList.ToList()
.Where(s=>s.Id==MyProductId)
.FirstOrDefault();
例如,,
我的列表有5个数据,如下所示
Id-Name
6,Computer
135,KeyBoard
68,Mouse
98,Telephone
213,Laptop,
MyProductId
是135
所以它与键盘匹配。它是行计数编号(索引)必须是“1”,因为0是计算机
如何获取所选Id的行计数(索引)编号?如果您希望获得需要分组的计数
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、名称和计数:
//"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()
};
关于您的评论:这是您期望的结果吗?如果您的列表实现了indexer,您可以通过索引直接获取元素。你可以找到 另一种方法可以如中所述 上面的链接显示如下: 从上面的链接复制:
Person agedTwenty = myList.Where<Person>( x => return x.Age == 20; ).Single<Person>();
int index = myList.IndexOf(agedTwenty);
Person-agedTwenty=myList.Where(x=>返回x.Age==20;).Single();
int index=myList.IndexOf(agedTwenty);
或者
int index = myList.Where<Person>( x => return x.Age == 20; ).Select<Person,int>( x =>
myList.IndexOf(x)).Single<int>();
int index=myList.Where(x=>returnx.Age==20;)。选择(x=>
myList.IndexOf(x)).Single();
如果可能有多个结果,您可以这样做:
IEnumerable<Person> allAgedTwenty = myList.Where<Person>( x => return x.Age == 20; );
IEnumerable<int> indices = allAgedTwenty.Select<Person,int>( x => myList.IndexOf(x) );
IEnumerable allAgedTwenty=myList.Where(x=>返回x.Age==20;);
IEnumerable index=allAgedTwenty.Select(x=>myList.IndexOf(x));
第一种情况将只得到一个int,第二种情况将给您留下一个int列表。行号是什么意思?您能添加一些示例数据吗?列表中的对象是什么样子的?我更新了请检查SelectedDataRowNumber的副本。计数始终为1我不知道如果您选择
SelectedDataRowNumber.Count()
如果您按Id分组并随后按Id筛选,它将始终为1。您想要的计数在结果集中。