C# 是否可以返回列表中的项目以用于其他方法?

C# 是否可以返回列表中的项目以用于其他方法?,c#,list,methods,parameters,C#,List,Methods,Parameters,团结一致地工作 如果这看起来很可笑,或者如果答案很明显,那么我很抱歉 我有一个foreach循环,它循环遍历列表中的某些项,但只有某些对象受一组进一步说明的约束: (randomValues是一个整数数组,它存储七个随机数,列表中的每个项都有一个ID。) 我想用其他方法处理任何项目。因此,我考虑将该项作为方法的参数传递出去,但后来意识到我不知道该怎么做,我甚至不知道这样的事情是否可能 给你 var tempList=new List<int>();//assuming int val

团结一致地工作

如果这看起来很可笑,或者如果答案很明显,那么我很抱歉

我有一个foreach循环,它循环遍历列表中的某些项,但只有某些对象受一组进一步说明的约束:

(randomValues是一个整数数组,它存储七个随机数,列表中的每个项都有一个ID。)

我想用其他方法处理任何项目。因此,我考虑将该项作为方法的参数传递出去,但后来意识到我不知道该怎么做,我甚至不知道这样的事情是否可能

给你

var tempList=new List<int>();//assuming int values in list    
foreach (var item in itemsList)
{
    if(randomValues.Contains(item.itemID))
    {
        tempList.Add(item); //add item to temp list
        //some code
    }
}
return tempList;
var templast=newlist()//假设列表中的int值
foreach(项目列表中的var项目)
{
if(randomValues.Contains(item.itemID))
{
templast.Add(item);//将item添加到临时列表
//一些代码
}
}
返回圣殿骑士;
给你

var tempList=new List<int>();//assuming int values in list    
foreach (var item in itemsList)
{
    if(randomValues.Contains(item.itemID))
    {
        tempList.Add(item); //add item to temp list
        //some code
    }
}
return tempList;
var templast=newlist()//假设列表中的int值
foreach(项目列表中的var项目)
{
if(randomValues.Contains(item.itemID))
{
templast.Add(item);//将item添加到临时列表
//一些代码
}
}
返回圣殿骑士;
给你

var tempList=new List<int>();//assuming int values in list    
foreach (var item in itemsList)
{
    if(randomValues.Contains(item.itemID))
    {
        tempList.Add(item); //add item to temp list
        //some code
    }
}
return tempList;
var templast=newlist()//假设列表中的int值
foreach(项目列表中的var项目)
{
if(randomValues.Contains(item.itemID))
{
templast.Add(item);//将item添加到临时列表
//一些代码
}
}
返回圣殿骑士;
给你

var tempList=new List<int>();//assuming int values in list    
foreach (var item in itemsList)
{
    if(randomValues.Contains(item.itemID))
    {
        tempList.Add(item); //add item to temp list
        //some code
    }
}
return tempList;
var templast=newlist()//假设列表中的int值
foreach(项目列表中的var项目)
{
if(randomValues.Contains(item.itemID))
{
templast.Add(item);//将item添加到临时列表
//一些代码
}
}
返回圣殿骑士;

取决于对象/方法的结构。是否需要将单个项传递给方法

foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        SomeOtherMethod(item);
您是否需要此当前方法来筛选列表,使其只包含以后应传递给另一个方法的列表

foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        yield return item;
var matchingItems = new List<SomeType>();
foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        matchingItems.Add(item);
SomeOtherMethod(matchingItems);
是否需要将此方法中的匹配项列表传递给另一个方法

foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        yield return item;
var matchingItems = new List<SomeType>();
foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        matchingItems.Add(item);
SomeOtherMethod(matchingItems);

等等……

取决于对象/方法的结构。是否需要将单个项传递给方法

foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        SomeOtherMethod(item);
您是否需要此当前方法来筛选列表,使其只包含以后应传递给另一个方法的列表

foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        yield return item;
var matchingItems = new List<SomeType>();
foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        matchingItems.Add(item);
SomeOtherMethod(matchingItems);
是否需要将此方法中的匹配项列表传递给另一个方法

foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        yield return item;
var matchingItems = new List<SomeType>();
foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        matchingItems.Add(item);
SomeOtherMethod(matchingItems);

等等……

取决于对象/方法的结构。是否需要将单个项传递给方法

foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        SomeOtherMethod(item);
您是否需要此当前方法来筛选列表,使其只包含以后应传递给另一个方法的列表

foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        yield return item;
var matchingItems = new List<SomeType>();
foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        matchingItems.Add(item);
SomeOtherMethod(matchingItems);
是否需要将此方法中的匹配项列表传递给另一个方法

foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        yield return item;
var matchingItems = new List<SomeType>();
foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        matchingItems.Add(item);
SomeOtherMethod(matchingItems);

等等……

取决于对象/方法的结构。是否需要将单个项传递给方法

foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        SomeOtherMethod(item);
您是否需要此当前方法来筛选列表,使其只包含以后应传递给另一个方法的列表

foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        yield return item;
var matchingItems = new List<SomeType>();
foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        matchingItems.Add(item);
SomeOtherMethod(matchingItems);
是否需要将此方法中的匹配项列表传递给另一个方法

foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        yield return item;
var matchingItems = new List<SomeType>();
foreach (var item in itemsList)
    if (randomValues.Contains(item.itemID))
        matchingItems.Add(item);
SomeOtherMethod(matchingItems);

以此类推……

var itemslection=itemsList.Where(i=>randomValues.Contains(i.itemsid)).ToList()
var itemsCopy=itemsList.Where(i=>randomValues.Contains(i.itemID)).ToList()
var itemsCopy=itemsList.Where(i=>randomValues.Contains(i.itemID)).ToList()
var itemsCopy=itemsList.Where(i=>randomValues.Contains(i.itemID)).ToList()

您可以使用以下代码:

return itemList.where (item => randomValues.Contains(item.itemID));

我选择不使用ToList()以从延迟评估中获益。

您可以使用以下代码:

return itemList.where (item => randomValues.Contains(item.itemID));

我选择不使用ToList()以从延迟评估中获益。

您可以使用以下代码:

return itemList.where (item => randomValues.Contains(item.itemID));

我选择不使用ToList()以从延迟评估中获益。

您可以使用以下代码:

return itemList.where (item => randomValues.Contains(item.itemID));

我选择不使用ToList()来受益于懒惰的评估。

不清楚您想做什么(或者Unity是否相关)。您正在尝试将列表中的项传递给此方法还是将
项传递给另一个方法?将
//不相关的代码
替换为
其他方法(项)
尝试使用Linq:
@DmitryBychenko如果循环中有大量逻辑,并且如果在foreach循环之外调用它,那么这可能不适用,您将重复两次。您遵循了正确的思维过程——通过返回值的子集,您增加了代码的模块化程度。通过让您的方法创建一个新对象并返回它,而不是修改一个全局集合,您可以使您的方法成为一个纯方法,这是一件美妙的事情。不清楚您试图做什么(或者Unity是否相关)。您正在尝试将列表中的项传递给此方法还是将
项传递给另一个方法?将
//不相关的代码
替换为
其他方法(项)
尝试使用Linq:
@DmitryBychenko如果循环中有大量逻辑,并且如果在foreach循环之外调用它,那么这可能不适用,您将重复两次。您遵循了正确的思维过程——通过返回值的子集,您增加了代码的模块化程度。通过让您的方法创建一个新对象并返回它,而不是修改一个全局集合,您可以使您的方法成为一个纯方法,这是一件美妙的事情。不清楚您试图做什么(或者Unity是否相关)。您正在尝试将列表中的项传递给此方法还是将
项传递给另一个方法?将
//不相关的代码
替换为
其他方法(项)
尝试使用Linq:类似于
项列表。其中(项=>随机值。包含(项。项ID))
@DmitryBychenko,如果存在较大的