Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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 5_Generic Collections - Fatal编程技术网

C# 获取列表中项目的特定匹配项

C# 获取列表中项目的特定匹配项,c#,entity-framework-5,generic-collections,C#,Entity Framework 5,Generic Collections,我想获得一个集合中所有项目的特定发生率,例如,获取第一次出现的所有值,比如说3次出现的值 如果我有下面的代码,我将如何实现这一点?如果i等于1,我只希望集合中的第一个匹配项传递给我的ProcessForm4PDFormFields方法,而不是整个集合。 因此,参数“myResult”只包含一个根据“i”是什么传递的引用 public void GetForm4Results(字符串FormId、int LoanId、字符串MainDir3、字符串TemplateFile、Int16 i) { 尝

我想获得一个集合中所有项目的特定发生率,例如,获取第一次出现的所有值,比如说3次出现的值

如果我有下面的代码,我将如何实现这一点?如果i等于1,我只希望集合中的第一个匹配项传递给我的ProcessForm4PDFormFields方法,而不是整个集合。

因此,参数“myResult”只包含一个根据“i”是什么传递的引用

public void GetForm4Results(字符串FormId、int LoanId、字符串MainDir3、字符串TemplateFile、Int16 i)
{
尝试
{
使用(VisionEntities DbContext=new VisionEntities())
{
DbContext.Configuration.LazyLoadingEnabled=false;
DbContext.Database.Connection.Open();
int?LoanIdTmp=LoanId;
ObjectResult=DbContext.SelectForm4(8900,LoanId);
List myResult=新列表();
myResult=result.ToList();
ProcessForm4PDFormFields(myResult、FormId、MainDir3、TemplateFile、i);
}
}
捕获(例外情况除外)
{
掷骰子;
}
}

也许我不理解这个问题,但是如果你只想知道列表中的第一项,你可以简单地做

myResult = result.ToList()[0];
或者如果列表包含很多不同的内容

foreach (object o in result.ToList())
        {
            if (o.Equals(target))
            {
                myResult = o;
                break;
            }
        }

那么您是说希望myResult包含result中的第一个
i
对象

myResult = result.Take(i).ToList();
或者,如果您希望myResult只包含result中的
i
th对象,它将是

myResult = new List<SelectForm4_Result>() { result.ElementAt(i) };
myResult=newlist(){result.ElementAt(i)};
来源:

试试这个

myResult = i == 1 ? new List<PDFConverterModel.SelectForm4_Result>(result.Take(i)) : result.Take(i);

ProcessForm4PDFFormFields(myResult, FormId, MainDir3, TemplateFile, i);
myResult=i==1?新列表(result.Take(i)):result.Take(i);
ProcessForm4PDFormFields(myResult、FormId、MainDir3、TemplateFile、i);

永远不要写
抛出ex。除了它什么都不做之外,还有其他原因吗?@aaronode:它会破坏堆栈跟踪。如果您需要在catch中执行某些操作,请编写
throw。我不同意使用“myResult=result.ToList()[0];”如果列表为空,则会遇到问题,而且使用“0”索引更静态。您可以使用更好的选项“myresult=result.ToList().First()”或“myresult=result.ToList().FirstOrDefault()”并检查myresult是否为null。一个是预检查,一个是后检查。当我尝试应用第一个选项时,我得到的消息是:无法隐式地将类型“PDFConverterModel.SelectForm4_Result”转换为“Systems.Collections.Generic.List”。方法中的语法是什么,以便只获取第一项?请尝试此ProcessForm4PDFormFields(新列表(myResult)、FormId、MainDir3、TemplateFile、i);但是,我如何只传递第一个参数中第一次出现的“myResult”呢?我得到的错误消息与以前相同:无法将类型“PDFConverterModel.SelectForm4_Result”隐式转换为“Systems.Collections.Generic.List”。此外,我不仅需要能够传递列表中的第一次出现,还需要能够传递“I”值的任何出现正在进入方法。
myResult = i == 1 ? new List<PDFConverterModel.SelectForm4_Result>(result.Take(i)) : result.Take(i);

ProcessForm4PDFFormFields(myResult, FormId, MainDir3, TemplateFile, i);