繁体   English   中英

将两个列表值合并为一个

[英]Combine two list values into one

有没有办法将这些项目组合成一个列表项? 如果这是一个乞丐错误,我很抱歉

List<string> values = new List<string>();
        foreach (Feature f in allFeatures)
        {
            if (f.ColumnValues.ContainsKey(layercode)&& f.ColumnValues.ContainsKey(layercode2))
            {
                if (!values.Contains(f.ColumnValues[layercode].ToString()) && !values.Contains(f.ColumnValues[layercode2].ToString()))
                {
                    values.Add(f.ColumnValues[layercode].ToString());
                    values.Add(f.ColumnValues[layercode2].ToString());


                }
            }

        }

您可以使用元组列表,字典或创建类。 我不会深入解释这些,因为您应该能够轻松搜索并找到关于这些的所有其他问题。 其中一些来自内存,因此语法可能有些偏差。

元组列表

List<Tuple<string,string>> values = new List<Tuple<string,string>>();
//...
if ( !values.Any(v=>v.Item1 == f.ColumnValues[layercode].ToString()) && !values.Any(v=>v.Item2 == f.ColumnValues[layercode2].ToString()) )
{
    values.Add( Tuple.Create(f.ColumnValues[layercode].ToString(),  
                            f.ColumnValues[layercode2].ToString()) );
}

字典

Dictionary<string,string> values = new Dictionary<string,string> ();
//...
if (!values.ContainsKey(f.ColumnValues[layercode].ToString()) && !values.ContainsValue(f.ColumnValues[layercode2].ToString()))
{
    values[f.ColumnValues[layercode].ToString()] = f.ColumnValues[layercode2].ToString();
}

类实例列表

public class LayerCodePair {
    public string Code1 {get;set;}
    public string Code2 {get;set;}
} // declared outside of method
...

List<LayerCodePair> values = new List<LayerCodePair>();
//...
if (!values.Any(v=> v.Code1 == f.ColumnValues[layercode].ToString()) && !values.Any(v=>v.Code2 == f.ColumnValues[layercode2].ToString()))
{
    values.Add(new LayerCodePair{ 
        Code1 = f.ColumnValues[layercode].ToString(),
        Code2 = f.ColumnValues[layercode2].ToString()
    });
}

它应该适合你,使用“;” 字符作为分隔符:

List<string> values = new List<string>();
foreach (Feature f in allFeatures)
{
    var columnValues = f.ColumnValues;
    var firstLayerCode = columnValues[layercode].ToString();
    var secondLayerCode = columnValues[layercode2].ToString();

    if (columnValues.ContainsKey(layercode) && columnValues.ContainsKey(layercode2))
    {
        if (!values.Contains(firstLayerCode) && !values.Contains(secondLayerCode))
        {
            var combinedValue = firstLayerCode + ";" + secondLayerCode;
            values.Add(combinedValue);
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM