2013-03-19 5 views
0

J'ai 1 collection principale, dont le membre est un objet avec un type de contenu de champ. où valeur du type de contenu est une énumération ContentTypeEnum. il y a une liste de type de contenu groupé (par exemple TEXT_GROUP ou pdf, texte ...) List<ContentTypeEnum>Vérification de la présence d'un membre dans un ensemble à l'aide de la construction from-from

Je veux filtrer résultat pour tout contenu groupe donné (TEXT_GROUP), si le type de contenu de l'objet est celui d'un Eh bien, je suis relativement nouveau à C#, mais j'ai vu «dans» est là, peut-être que cela fonctionne quelque chose de semblable à un en SQL?

Répondre

1

Vous devez utiliser la méthode Contains:

form p in ... 
where TEXT_GROUOP.Contains(p.ContType) 
0

Item Classe:

public class Item 
{ 
    public string Value { get; set; } 
    public ContentTypeEnum Type { get; set; } 
} 

ContentTypeEnum ENUM:

public enum ContentTypeEnum 
{ 
    Text, 
    PDF, 
    XML, 
    MP3 
} 

Votre groupe:

var textGroup = new List<ContentTypeEnum>() { 
    ContentTypeEnum.Text, 
    ContentTypeEnum.PDF, 
    ContentTypeEnum.XML 
}; 

entrée liste des Item:

var items = new List<Item>() { 
    new Item() { Value = "custom PDF file", Type = ContentTypeEnum.PDF }, 
    new Item() { Value = "My fav MP3", Type = ContentTypeEnum.MP3 }, 
    new Item() { Value = "Paper", Type = ContentTypeEnum.Text } 
}; 

Cette requête renverra uniquement les éléments, qui a un type qui se trouve dans textGroup liste:

var textItems = items.Where(i => textGroup.Contains(i.Type)).ToList(); 

Si simple Console.WriteLine(item.Value) pour chaque résultat imprimera:

custom PDF file 
Paper 
Questions connexes