using System;
using System.Collections.Generic;
using System.Linq;

namespace SingleOrDefault
{
    class Program
    {
        private class JobSource
        {
            public string SourceType;
            public int JobId;
            public int Id;
            public string Path;
        }

        private static readonly List<JobSource> jobSourceTable = new List<JobSource>{
            new JobSource { SourceType = "File", JobId = 1, Id = 1, Path = "C:\\Windows"},
            new JobSource { SourceType = "File", JobId = 2, Id = 2, Path = "C:\\Windows"},
            new JobSource { SourceType = "Network", JobId = 3, Id = 3, Path = "\\\\mypc\\C$\\Windows"}
        };

        static void Main(string[] args)
        {
            string sourceValue = "File";
            int jobId = 2;
            UpdateOrAdd(sourceValue, jobId, "C:\\Temp");
            UpdateJobSourceWithFunkyData();
            UpdateOrAdd(sourceValue, jobId, "C:\\Program Files");
        }

        private static void UpdateOrAdd(string sourceType, int jobId, string path)
        {
            var jobSourcesMatching = from source in jobSourceTable
                                     where source.SourceType == sourceType && source.JobId == jobId
                                     select source;

            if (jobSourcesMatching.Any())
            {
                var jobSource = jobSourcesMatching.First();
                jobSource.Path = path;
            }
            else
            {
                jobSourceTable.Add(new JobSource { JobId = jobId, SourceType = sourceType, Path = path });
            }
        }

        private static void UpdateJobSourceWithFunkyData()
        {
            jobSourceTable.Add(new JobSource { SourceType = "File", JobId = 2, Id = 4, Path = "C:\\Users" });
        }
    }
}