0

我有一本字典,它的类型是Dictionary<int, fooClass> fooDic,另一个字典是Dictionary<int, string> barlist,我正在使用这个 linq 返回结果

var foobarList = fooDic.Where(kvp => 
       !barlist.ContainsKey(((fooClass)kvp.Value)._fooID))
       .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

这将返回 fooDic 类型的结果。但我需要将强制转换输出键入为barlist(Dictionary<int, string>)类型。如何?

4

2 回答 2

2

如果这是一个相当简单的转换,关键是你的最后一部分

var foobarList = fooDic.Where(kvp => 
    !barlist.ContainsKey(((fooClass)kvp.Value)._fooID))
    .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

陈述。在您当前使用的地方kvp => kvp.Value,您将其替换为kvp => kvp.Value._foobarValue.

根据 OP 的评论编辑“完整”解决方案。

于 2012-07-27T07:33:14.053 回答
1

假设你的班级 Foo 看起来像这样:

public class Foo
{
    public string SomeValue { get; set; }
    public int SomeOtherStuff { get; set; }
}

创建一个新字典:

var fooDict = new Dictionary<int, Foo>() {
    {0, new Foo() {SomeOtherStuff=10, SomeValue="some value"} },
    {1, new Foo() {SomeOtherStuff=15, SomeValue="some other value"} }
};

转换它:

Dictionary<int, string> stringDict = 
    fooDict.ToDictionary(x=> x.Key, x=> x.Value.SomeValue);  //<- note x.Value.SomeValue

stringDict 现在将包含:

{0, "some value"}, {1, "some other value"}
于 2012-07-27T07:35:53.303 回答