从linq投影到keyvalue对

时间:2015-11-20 10:40:05

标签: c# .net linq

我想从json动作结果返回某个对象的Id和Name属性,所以我决定使用KeyValuePair数据类型。

我的问题是如何从linq投影中将数据注入KeyValuePair变量,例如

int id = 100;
string name = "john";
var data = repository.FindById(id);
var result = new KeyValuePair<int, string>();
result = data.Where(c=>c.Name == name)        
   .Select(x=>.x.Id)
   .Select(a=>a.Name).FirstOrDefault();

2 个答案:

答案 0 :(得分:3)

您需要在查询中Select KeyValuePair

int id = 100;
string name = "john";
var data = repository.FindById(id);
var result = data.Where(c=>c.Name == name)        
   .Select(x => new KeyValuePair<int,string>(x.Id, x.Name))
   .FirstOrDefault();

答案 1 :(得分:0)

明确的方式 - 可能更好的可读性 - 将是

var kv = new KeyValuePair<int, string> 
{
    Key = data.Where(c => c.Name == name).Select(x =>.x.Id).FirstOrDefault(),
    Value = data.Where(c => c.Name == name).Select(a => a.Name).FirstOrDefault()
};