title: No coercion operator is defined between types 'System.Guid' and 'System.String'
body: <p>I am building Expression tree for <code>Linq-to-sql</code>. In database on some of tables relevant columns are stored as <code>string</code> while some are stored as <code>Guid</code>. I have solved similar problem with <code>int</code> and <code>int?</code> by wrapping lambda constant with <code>Expression.Convert(Expression.Constant(search.PolicyNumber), policyNumberColumnLambda.Type)</code> (where <code>PolicyNumber</code> sometimes was <code>nullable</code>)  which worked just fine. But it does not fly for <code>Guid</code> to <code>string</code> conversion apparently.</p>
  
  <p><strong>Code looks following:</strong></p>
  
  <pre><code>public static IQueryable&lt;IRetrieveGuid&gt; SearchByRetrieveGuid&lt;IRetrieveGuid&gt;(this IQueryable&lt;IRetrieveGuid&gt; queryable, SearchModel search)
      {
          var paramLambda = Expression.Parameter(typeof(IRetrieveGuid));
          var columnLambda = Expression.Property(paramLambda, "retrieveguid");
          var lambda = Expression.Lambda&lt;Func&lt;IRetrieveGuid, bool&gt;&gt;(
              Expression.Equal(columnLambda, Expression.Convert(Expression.Constant(search.RetrieveGuid), columnLambda.Type)), paramLambda);
          return queryable.Where(lambda);
      }
  </code></pre>
  
  <p><strong>How do I convert types to match in expression tree?</strong></p>