Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# 使用基于2个变量的LINQ从列表中选择1个对象_C#_Linq_List_Select - Fatal编程技术网

C# 使用基于2个变量的LINQ从列表中选择1个对象

C# 使用基于2个变量的LINQ从列表中选择1个对象,c#,linq,list,select,C#,Linq,List,Select,我一直试图通过阅读StackOverflow上的内容来解决这个问题,这些信息非常有用,但我似乎无法实现我发现的东西 我有一个数据列表,我想检查数据集中是否存在与我提供的两个变量匹配的条目 public void SaveWaveDataFor( List<WaveData> newData ) { foreach(WaveData wave in newData) { //WaveData item = data.FirstOrDefault( o =

我一直试图通过阅读StackOverflow上的内容来解决这个问题,这些信息非常有用,但我似乎无法实现我发现的东西

我有一个数据列表,我想检查数据集中是否存在与我提供的两个变量匹配的条目

public void SaveWaveDataFor( List<WaveData> newData )
{
    foreach(WaveData wave in newData)
    {
        //WaveData item = data.FirstOrDefault( o => o.id == wave.id );
        var item = data.Select( o => new{ wave.id, wave.waveNumber  } );
        Debug.Log( item.id );
    }
}
public void SaveWaveDataFor(列出新数据)
{
foreach(新数据中的WaveData波形)
{
//WaveData项=data.FirstOrDefault(o=>o.id==wave.id);
var item=data.Select(o=>new{wave.id,wave.waveNumber});
Debug.Log(item.id);
}
}

如果要获取符合两个条件的所有
wave
对象,可以使用
Where()
子句:

// items will be an IEnumerable<WaveData> containing the matching objects
// where id == matchId and waveNumber == matchNumber
var items = data.Where(o => o.id == matchId && o.waveNumber == matchNumber);
//项将是包含匹配对象的IEnumerable
//其中id==matchId和waveNumber==matchNumber
var items=data.Where(o=>o.id==matchId&&o.waveNumber==matchNumber);

Select()
子句通常用于将匹配的元素转换为另一种类型的对象。

如果要获得符合两个条件的所有
wave
对象,可以使用
Where()
子句:

// items will be an IEnumerable<WaveData> containing the matching objects
// where id == matchId and waveNumber == matchNumber
var items = data.Where(o => o.id == matchId && o.waveNumber == matchNumber);
//项将是包含匹配对象的IEnumerable
//其中id==matchId和waveNumber==matchNumber
var items=data.Where(o=>o.id==matchId&&o.waveNumber==matchNumber);

Select()
子句通常用于将匹配的元素转换为另一种类型的对象。

实际上,注释掉的行更好

FirstOrDefault将返回第一个匹配项,如果没有匹配项,则返回null

另一方面,如果只想知道某个项是否存在,可以使用Any()。 任何(x=>x.Id==matchId)仅当列表包含具有匹配Id的项时才会返回true,否则返回false

你可以这样做:

public void SaveWaveDataFor( List<WaveData> newData )
{
    int waveIdToMatch = 1;
    int waveNumberToMatch = 2;
    foreach(WaveData wave in newData)
    {
        WaveData item = data.FirstOrDefault( o => o.id == waveIdToMatch && o.waveNumber == waveNumberToMatch );
        //if a match exists, item will not be a WaveData object, otherwise it will be null
        Debug.Log( item.id );
    }
}
public void SaveWaveDataFor(列出新数据)
{
int waveIdToMatch=1;
int waveNumberToMatch=2;
foreach(新数据中的WaveData波形)
{
WaveData项=data.FirstOrDefault(o=>o.id==waveIdToMatch&&o.waveNumber==waveNumberToMatch);
//如果存在匹配项,则该项将不是WaveData对象,否则将为null
Debug.Log(item.id);
}
}

实际上,注释掉的行更好

FirstOrDefault将返回第一个匹配项,如果没有匹配项,则返回null

另一方面,如果只想知道某个项是否存在,可以使用Any()。 任何(x=>x.Id==matchId)仅当列表包含具有匹配Id的项时才会返回true,否则返回false

你可以这样做:

public void SaveWaveDataFor( List<WaveData> newData )
{
    int waveIdToMatch = 1;
    int waveNumberToMatch = 2;
    foreach(WaveData wave in newData)
    {
        WaveData item = data.FirstOrDefault( o => o.id == waveIdToMatch && o.waveNumber == waveNumberToMatch );
        //if a match exists, item will not be a WaveData object, otherwise it will be null
        Debug.Log( item.id );
    }
}
public void SaveWaveDataFor(列出新数据)
{
int waveIdToMatch=1;
int waveNumberToMatch=2;
foreach(新数据中的WaveData波形)
{
WaveData项=data.FirstOrDefault(o=>o.id==waveIdToMatch&&o.waveNumber==waveNumberToMatch);
//如果存在匹配项,则该项将不是WaveData对象,否则将为null
Debug.Log(item.id);
}
}

如果您只想检查条目是否存在,则可以使用Linq中的
任何
运算符

bool recordsExists = data.Any(o => o.id == matchId && o.waveNumber == matchNumber); 

如果您只想检查条目是否存在,那么可以使用Linq中的
Any
操作符

bool recordsExists = data.Any(o => o.id == matchId && o.waveNumber == matchNumber); 

我换了位置。FirstOrDefault,它似乎很管用!我换了位置。FirstOrDefault,它似乎很管用!