Существует модель:
public class Word
{
public Dictionary<string, string> Langs { get; set; }
}
Существует список языков для использования:
// I need to use these 2 langs only
List<string> langsToUse = new List<string> { "en", "pl" };
Список слов содержит ненужные или недопустимые langs:
List<Word> wordsList = new List<Word> {
new Word {
Langs = new Dictionary<string, string> {
{"en", "Dog"},
{"pl", "Pies"},
{"ge", "Hund"},
//... and so on
}},
new Word {
Langs = new Dictionary<string, string> {
{"en", "Kat"},
{"pl", ""},
{"ge", ""}
//... and so on
}},
new Word {
Langs = new Dictionary<string, string> {
{"en", "Car"},
{"pl", ""},
{"ge", ""}
//... and so on
}},
};
Простой способ проверить это так:
// And value shouldn't be ""
var validWords = wordsList.Where(p => p.Langs["en"] != "" &&
p.Langs["pl"] != "");
Я не хочу каждый раз набирать клавиши "en", "pl" вручную, поэтому мне нужно как-то его автоматизировать,как-то так:
// use foreach for validate words
List<Word> validWords_2 = new List<Word>();
foreach(Word word in wordsList)
{
bool isWordValid = true;
foreach(string lang in langsToUse)
{
if(word.Langs[lang] == ""){
isWordValid = false;
}
}
if(isWordValid) {
validWords_2.Add(word);
}
}
Но я думаю, что эту автоматизацию можно сделать проще, если есть какой-то способ сделать это с помощью Linq и Dictionary каким-то образом.