C# 获取列表中项目的特定匹配项
我想获得一个集合中所有项目的特定发生率,例如,获取第一次出现的所有值,比如说3次出现的值 如果我有下面的代码,我将如何实现这一点?如果i等于1,我只希望集合中的第一个匹配项传递给我的ProcessForm4PDFormFields方法,而不是整个集合。 因此,参数“myResult”只包含一个根据“i”是什么传递的引用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) { 尝
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);