Home > database >  Sequence contains no elements in linq?
Sequence contains no elements in linq?

Time:03-05

I'm trying to get lowest and highest values in key of a dictionary below

public static Dictionary<SimulationResult, List<Student>> SimulationOutput { get; set; } = new Dictionary<SimulationResult, List<Student>>();

this is the class in the key

internal class SimulationResult
{
    public int Unsolved { get; set; }
    public int ValuePreferences { get; set; }
    public int Index { get; set; }
}

I'm getting the error in the Sequence contains no elements on the lines below

int bestResult = SimulationOutput.Keys.Where(x=> x != null).Select(x => x.ValuePreferences).Max();

also on these lines

int bestResult = SimulationOutput.Keys.Select(x => x.ValuePreferences).Max();
int LowestUnsonved = SimulationOutput.Keys.Select(x => x.Unsolved).Min();

The dictionary is filled in a Parallel for loop.

Parallel.For(1, verwerken.Gegevens.AantalIteraties   1, i =>
{
    PracticumCollectie practicumCollectie = verwerken.Data.PracticumCollectie.Copy();
    StudentCollectie studentCollectie = verwerken.Data.StudentCollectie.Copy();
    studentCollectie.OrderStudentByPreference();
    studentCollectie.AssiningStudentToPracticum(practicumCollectie);

    practicumCollectie.Oplossing.Index = i;
    practicumCollectie.ZetAantalOnopgeloste(studentCollectie);
    practicumCollectie.ZetWaardeVoorkeuren(studentCollectie);

    bool schrijfOplossing = verwerken.Keuze.IsSimuleren ? verwerken.VoldoetAanOndergrenzen(practicumCollectie.Oplossing) : true;

    if (schrijfOplossing)
    {
        SimulationOutput.Add(verwerken.GetBestandsnaam(practicumCollectie.Oplossing), new List<Student>(studentCollectie.Items));
    }
});

CodePudding user response:

you have to use ConcurrentDictionary if you are working with Parallel.

normal dictionaries aren't threadsafe.

  • Related