Search code examples
c#stringnullisnullorempty

How do I check for null or empty string for many arguments? - C#


I have the below method, which I need to check for whether the arguments are empty or null.

    public DB Where(string field, string operat, string value, string andOr, string field2, string operat2, string value2)
    {
        _Where = " WHERE " + field + " " + operat + " @" + field + "1 " + andOr + " " + field2 + " " + operat2 + " @" + field2 + "2 ";
        _Params.Add(field + "1", value);
        _Params.Add(field2 + "2", value2);
        return this;
    }

I have found the string.IsNullOrWhiteSpace method however this would require this much code:

                   if (string.IsNullOrWhiteSpace(field))
            throw new ArgumentException("field Cannot be null or be empty");

        if (string.IsNullOrWhiteSpace(operat))
            throw new ArgumentException("operat Cannot be null or be empty");

        if (string.IsNullOrWhiteSpace(value))
            throw new ArgumentException("value Cannot be null or be empty");

        if (string.IsNullOrWhiteSpace(andOr))
            throw new ArgumentException("andOr Cannot be null or be empty");

        if (string.IsNullOrWhiteSpace(field2))
            throw new ArgumentException("field2 Cannot be null or be empty");

        if (string.IsNullOrWhiteSpace(operat2))
            throw new ArgumentException("operat2 Cannot be null or be empty");

        if (string.IsNullOrWhiteSpace(value2))
            throw new ArgumentException("value2 Cannot be null or be empty");

Is there any way of shortening this?

Also, I have tried creating a custom method for this task, however it throws an exception in the custom method instead of the Where() method which makes it tricky to debug.


Solution

  • You could check the value one by one or creating intermediate function to do that.

    Alternatively, my suggestion is: you could put all the inputs in an array and use LINQ Any to check all of them at once:

    public DB Where(string field, string operat, string value, string andOr, string field2, string operat2, string value2)
    {
        string[] inputs = {field, operat, value, andOr, field2, operat2, value2}
        if (inputs.Any(x => string.IsNullOrWhiteSpace(x))){
            //throw exception
        }
        //continue with your method, all inputs are OK
    }