我正在尝试创建一个在网络上运行的Components
列表。我试图获取ObservableCollection
中的所有组件。 ObservableCollection<ClsComponent>
现在我的问题是,如果集合中的某个组件被更改/修改,我将如何将其反映到我的ObservableCollection
组件
我尝试过:使用 LINQ 更改它:在集合中找到Component
并更改它?
var CompFound = Components.FirstOrDefault(x=>x.Id == myId);
Components.Remove(CompFound);
Components.Add(UpdatedComp);
我非常肯定应该有更优化的方法来做到这一点。请建议。
修改
我正在尝试在函数中编写代码,我可以在其中获取Source Component
和Destination Component
的参数。功能看起来像这样
public void UpdateComponent(ClsComponent SourceComp, ClsComponent DestComp)
{
//do something here
}
执行该函数后,我想用源组件替换源组件。
答案 0 :(得分:1)
我相信这可能对你有用。我相信你可能正在寻找这个
transpose : List (List a) -> Maybe (List (List a))
transpose ll =
case ll of
((x::xs)::xss) ->
let
heads =
xss
|> List.map List.head
|> insideout
tails =
xss
|> List.map List.tail
|> insideout
in
(x #^ heads) ^#^ ((xs #^ tails) `Maybe.andThen` transpose)
_ ->
if ll == List.filter List.isEmpty ll then
Just []
else
Nothing
----- Some helper functions: -----
mCons : a -> Maybe (List a) -> Maybe (List a)
mCons v ml = Maybe.map ((::) v) ml
v #^ ml = mCons v ml
-- this is really a Maybe.map2 (::) mv ml
-- but the standard library doesn't provide map2 :(
m2Cons : Maybe a -> Maybe (List a) -> Maybe (List a)
m2Cons mv ml =
case (mv,ml) of
(Just v, Just l) -> Just (v :: l)
_ -> Nothing
mv ^#^ ml = m2Cons mv ml
-- list of justs to just of list
insideout : List (Maybe a) -> Maybe (List a)
insideout l =
case l of
[] -> Just []
((Just v) :: tail) -> v #^ insideout tail
(Nothing :: _) -> Nothing
答案 1 :(得分:0)
最有效的方法之一是使用字典。 ObservableDictionary的实现将为您提供Observable行为,同时允许对对象进行快速的基于密钥的访问。 检查此stackoverflow question。它包括微软的
它应该像ObservableCollection一样工作,除了它也是一本字典。因此,您可以创建ObservableDictionary<Int,ClsComponent>
要替换值,只需调用
Components[myId] = destComp