2016-06-29 3 views
0

Ich habe mit dem folgenden zu kämpfen. Kann mir jemand helfen, wie das geht?NHibernate Wie schreibe ich eine Abfrage mit wie jedes Element in einer Liste oder Array

Wie nhibernate Abfrage an den folgenden

select * from tableA where description like (*Any of the items from a lst*) 

List<string> lst = new List<string> 
{ 
    "AAA","BBB","CCC","DDD" 
} 

im Moment schreibe ich alle Datensätze am auswählen und diese Filterung auf die im Speicher Sammlung anzuwenden.

Der eigentliche Code:

private List<string> lst = new List<string>{ 
     "AMV", 
     "BMVi", 
     "CMV", 
     "DTL" 
    } 
    public virtual IEnumerable<Asset> ReplayAssets(DateTime updatedDateTimeFrom, DateTime updatedDateTimeTo) 
    { 
     Asset assetAlias = null; 
     var query = Session.QueryOver(() => assetAlias); 

     //Here i need to add something like 
     query.where(()=>assetAlias.title.like(*any item in the above list lst*) 

     query.Where(() => assetAlias.LastUpdatedDate.IsBetween(updatedDateTimeFrom).And(updatedDateTimeTo)); 

     return query.Future<Asset>(); 
    } 

Dank

+0

Verwenden [QueryOver] (http://stackoverflow.com/questions/4541546/queryover-and-x-like-a-or-y-like-a) – stuartd

+0

Bitte fügen Sie einen größeren Teil Ihres Codes ? –

+0

@GiladGreen Ich habe mit einem größeren Teil meines Codes aktualisiert. –

Antwort

0

Es ist ganz einfach.

var lst = new List<string> 
{ 
    "AAA", "BBB", "CCC", "DDD" 
}; 

var items = Session.Query<TableA> 
    .Where(x => lst.Contains(x.Description)) 
    .ToList(); 
Verwandte Themen