Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体框架获取列表中的行索引_C#_Entity Framework - Fatal编程技术网

C# 使用实体框架获取列表中的行索引

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

我的列表中有5个数据

MyList

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

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。您想要的计数在结果集中。