底线是我想要一个linq语句,返回与下面的代码相同的列表 .
我觉得这是可能的,我觉得在我放弃之前我已经非常接近,并且用更多行代码拼出了我想要的东西 .
虽然我会喜欢和欣赏任何能展示我未来想要实现的东西并取代我所拥有的东西的人 .
public ObservableCollection IndexChannels
{
get
{
ObservableCollection filtered = new ObservableCollection();
filtered.Add(indexChannels.First());//add Disabled no matter what
//add the cur channels selected index if it isn't already disabled
if (!filtered.Contains(indexChannels.FirstOrDefault(i => i == CurChannel.IndexChannel)))
{
filtered.Add(indexChannels.FirstOrDefault(i => i == CurChannel.IndexChannel));
}
foreach (PdioChannelModel ch in channels)
{
//if the channels mode isn't q-decode or quad index add its Number as an index
if (ch.Mode.Value != "Q-Decode" && ch.Mode.Value != "Quad Index")
{
filtered.Add(indexChannels.FirstOrDefault(i => i.ID == ch.Number));
}
}
return filtered;
}
}
VarItem的基本结构
公共类VarItem {public int ID {get;私人集; } public string Value {get;私人集;公共字典MetaData {get;私人集; }
public VarItem(int id, string value)
{
this.ID = id;
this.Value = value;
MetaData = new Dictionary();
}
示例主列表包含VarItems:
-1,“禁用”
1,“ Channels 1”
2,“ Channels 2”
3,“ Channels 3”
过滤的列表应始终包含 VarItem(-1, Disabled) . 它还应该包含 VarItem , ID 匹配 CurChannel.IndexChannel ,最后它应该包含任何 VarItem ,其中ID匹配任何 PdioChannelModel.Number 其中 PdioChannelModel.Mode.Value != "Q-Decode" or "Quad Index"
如果我错过任何需要的细节,请告诉我 . 如果我困惑你,写了很多或需要澄清,也请告诉我 .