2012-02-17 18 views
7

Tengo una tabla llamada Tag con una columna llamada Label y una columna llamada AuctionId. También tengo una serie de cadenas que son términos de búsqueda. Quiero escribir un código Linq to Entities que me proporcione una lista distinta de AuctionIds donde la etiqueta coincida con uno de los términos de búsqueda. Aquí está el pseudocódigo para esto:Entity Framework - Seleccione distinct en

return a list of unique AuctionIds where Label is in searchTerms 

¿Cómo se puede hacer esto?

Respuesta

15

Puede usar Contiene() en la lista.

List<String> AuctionIDs = (from tagItem in Tags 
          where searchItems.Contains(tagItem.Label) 
          select tagItem.AutionID).Distinct().ToList(); 
5

Usando Lambda notación para mayor claridad, Esto se desglosa en una serie de funciones en la secuencia de la siguiente manera:

IEnumerable<Int32> DistinctIds = TagTable.Where(x => searchTerms.Contains(x.Label)).Select(x => x.AuctionId).Distinct() 

Sin ir más lejos en la sintaxis lambda, las características clave son:

.Where (x => searchTerms.Contains (x.Label)) - se seleccionará a cabo sólo las filas donde la colección searchTerms contiene el valor de la etiqueta para esa fila

.Elija (x => x.Au ctionId) - volver a cabo sólo los valores enteros en lugar de AutionId el registro completo

.Distinct() - hace exactamente lo que dice en la púa

Esperanza esto ayuda