public static IList<string> RetrieveTheWhereItemUniqueNames(Where whereToCheck)
 {
     return
         whereToCheck.GetType().GetProperty("WhereItems", BindingFlagsToSeeAll)
                     .GetValue(whereToCheck, BindingFlagsToSeeAll, null, null, null)
                     .As<IList<WhereItem>>()
                     .Select(x => x.UniqueKey)
                     .ToList();
 }
        public void TheDeleteCanCreateAValidStatementWithConditions()
        {
            var firstColumnIsEqualToFirstValue =
                new Where()
                    [
                        FirstColumn.IsEqualTo(FirstValue)
                    ];

            var deleteStatement =
                new Delete(SomeTable)
                    .Where(firstColumnIsEqualToFirstValue);

            var whereItem =
                firstColumnIsEqualToFirstValue.GetType().GetProperty("WhereItems", BindingFlagsToSeeAll)
                    .GetValue(firstColumnIsEqualToFirstValue, BindingFlagsToSeeAll, null, null, null)
                    .As<IList<WhereItem>>()
                        .First();

            deleteStatement.CreateSql().Should().Be("DELETE FROM " + SomeTable + " WHERE " + FirstColumn + " = @" + whereItem.Name + whereItem.UniqueKey);
        }