using System; using System.Globalization; using System.Linq; using System.Collections.Generic; public class Test { public static void Main() { var myTable = new List() { new Foo { ColumnValue = "Five" }, new Foo { ColumnValue = "Four" }, new Foo { ColumnValue = "Three" }, new Foo { ColumnValue = "One" } }; string[] prefs = new[] { "One", "Two", "Three" }; string myResult = prefs.Select((pref, index) => new { pref, index }) .Join(myTable, xPref => xPref.pref, x => x.ColumnValue, (xPref, x) => new { xPref, x }) .OrderBy(x => x.xPref.index) .Select(x => x.x.ColumnValue) .DefaultIfEmpty("Four") .First(); Console.Write(myResult); } public class Foo { public string ColumnValue { get; set; } } }