Provo a creare dinamicamente una query LINQ per la ricerca di dati in tutte le colonne.Qual è il modo più efficiente per cercare il testo di qualsiasi tipo di dati in EF6?
Attualmente, io uso il seguente codice per creare query LINQ dinamica. Tuttavia, è piuttosto buggy quando si occupa di colonne complesse.
var type = property[col.ToLower()].PropertyType;
var isNullableType = type.IsGenericType && type.GetGenericTypeDefinition() == typeof (Nullable<>);
if (type.IsValueType && !isNullableType)
{
filter += col + ".ToString().ToLower().Contains(@" + i + ".ToLower())";
}
else if (isNullableType)
{
filter += col + ".HasValue ? " + col + ".Value.ToString().ToLower().Contains(@" + i + ".ToLower())" + " : false";
}
else
{
filter += "(" + col + " != null ? " + col + " : \"\").ToString().ToLower().Contains(@" + i + ".ToLower())";
}
Avete qualche idea per semplificare il mio codice sopra? Sono OK se il tuo suggerimento funziona solo per SQL Server 2008 o versioni successive.
Nota: I dati di colonna possono essere di qualsiasi tipo come intero, stringa, oggetto, enum e possono essere nulli.
E 'stato ok se ci ha mostrato SQL generato finale. – KumarHarsh
Questa è una funzione comune per qualsiasi controllo della tabella di dati. Non vi è alcun vantaggio nel mostrare all'utente una query SQL generata. Normalmente, la richiesta Ajax viene inviata dalla pagina web. Sul lato server, filtra i dati in modo dinamico, ordina i dati in modo dinamico in base alla colonna specificata, salta e acquisisce i dati appropriati in base alla pagina specificata. –