Or (with explicit reference for strings)

		/// <summary>
		///Returns the object if it's not null or the first object which is not null.
		/// Original Idea: Weidling C
		/// </summary>
		/// <typeparam name="T">Type of origination</typeparam>
		/// <param name="this">current object to be OR'ed</param>
		/// <param name="oValues">Array of type <c>T</c> for the rest of the list</param>
		/// <returns><see cref=""/> Item - or if null/empty move to next item chech and return &lt;-- Looping trought all items in oValues if all are empty, returnds default <see cref="T"/>value</returns>
		public static T Or<T>(this T @this, params T[] oValues)
		{
			foreach (var item in oValues)
			{
				if (@this is string)
				{
					if (string.IsNullOrWhiteSpace(@this.ToString()) == false)
					{
						return (@this);
					}
				}
				else
				{
					// ReSharper disable once CompareNonConstrainedGenericWithNull
					if (item != null)
					{
						return (item);
					}
				}
			}

			return default(T);
		}
Example:
string s = GetValue(); // s == null
Console.WriteLine(s.Or("value not found")):

Description

Returns the object if it's not null or the first object which is not null, With explicit reference for strings

Details

Double click on the code to select all.

 

;