먼저 IEnumerable을 만든 다음 끝에 Dictionary로 변환 할 수 있습니다.
는
public class DummyModel
{
private const decimal MinValue = 0m;
public int Id { get; set; }
public string FieldName { get; set; }
public string LabelName { get; set; }
//[DecimalValidatorAttrubute(precision: 2, maxdigits: 2, minValue: decimal.MinValue, maxValue: 99.99m)]
//public decimal Decimal { get; set; }
}
방법
private Dictionary<string, string> getDictionary()
{
var tbl1 = new List<DummyModel>() { new DummyModel() { Id = 1, FieldName = "Field1", LabelName = "Label1" }, new DummyModel() { FieldName = "Field2", LabelName = "Label2" } };
var tbl2 = new List<DummyModel>() { new DummyModel() { Id = 1, FieldName = "Field3", LabelName = "Label3" }, new DummyModel() { FieldName = "Field4", LabelName = "Label4" } };
var tbl3 = new List<DummyModel>() { new DummyModel() {Id = 1,FieldName = "Field5", LabelName = "Label5" }, new DummyModel() { FieldName = "Field6", LabelName = "Label6" } };
const int cid = 1;
Dictionary<string, string> dict = new Dictionary<string, string>();
dict = tbl1.Where(a => a.Id == cid)
.Concat(tbl2.Where(a => a.Id == cid))
.Concat(tbl3.Where(a => a.Id == cid))
.ToDictionary(a => a.FieldName, a => a.LabelName);
return dict;
}
다음은
[TestMethod]
public void LinqDictionary()
{
var dict = getDictionary();
foreach (var item in dict)
{
Console.WriteLine("FieldName {0}, LabelName {1} ", item.Key, item.Value);
}
}
출력 같은 것을 실현하려 도움이 될 것이다, 당신의 모델은 다음과 같습니다 제공
FieldName Field1, LabelName Label1
FieldName Field3, LabelName Label3
FieldName Field5, LabelName Label5
출처
2014-10-13 11:14:24
RAJ
정확히 무엇이 오류입니까? –
사전에는 AddRange 메서드가 없습니다 .. 키가 이미 있는지 여부를 확인하여 값을 하나씩 추가해야합니다. –
[여러 사전을 하나의 사전에 결합] 가능한 복제본 (http://stackoverflow.com/questions)/10559367/combine-multiple-dictionaries-a-single-dictionary) –