1

私はStackOverflowにあるものを読んでこれを解決しようとしてきましたが、情報は静かに役立ちましたが、見つけたものを実装できないようです。

データリストがあり、提供した2つの変数に一致するエントリがデータセットに存在するかどうかを確認したいと思います。

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 );
    }
}
4

3 に答える 3

1

wave2つの基準に一致するすべてのオブジェクトを取得する場合は、次の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);

このSelect()句は通常、一致する要素を別のタイプのオブジェクトに変換するために使用されます。

于 2012-09-14T00:04:12.747 に答える
0

コメントされたアウトラインは、実際にはこれに適しています。

FirstOrDefaultは、最初に一致するアイテムを返すか、一致するアイテムがない場合はnullを返します。

一方、アイテムが存在するかどうかを知りたいだけの場合は、Any()を使用できます。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 );
    }
}
于 2012-09-14T00:15:53.230 に答える
0

エントリが存在するかどうかを確認したいだけの場合はAny、LinqのOperatorを使用できます。

bool recordsExists = data.Any(o => o.id == matchId && o.waveNumber == matchNumber); 
于 2012-09-14T05:19:20.813 に答える