在字符串列表中比较同名

时间:2016-09-08 04:41:12

标签: c# list

我制作了一个列表str。

List<string> str = new List<string>();

str.AddRange(new string[] { "ahmedabad", "surat", "vadodara", "rajkot", "bhavnagar", "jamnagar", "gandhidham", "gandhinagar" });

我创建了一个类

class MatchAddress
        {
            public string Name { get; set; }

            public string Taluka { get; set; }

            public string District { get; set; }

            public string Pincode { get; set; }

            public float Rank { get; set; }
        }

List<MatchAddress> lm;
List<MatchAddress> lmmatch.

填写lm列表。

lm.Add(new MatchAddress() { District = "vadodara", Taluka = "vadodara", Rank = 1f, Name = "vadodara" });

lm.Add(new MatchAddress() { District = "gandhinagar", Taluka = "gandhinagar", Rank = 1f, Name = "vadodara" });




foreach (MatchAddress ma in lm)
                    {  
                       string pincode ="";
// what logic i write in below then only we got the vadodara because that name are in both taluka and name then only set nulll if any one differ then not set null.
                      if (str.Contains(ma.Name) && str.Contains(ma.Taluka.ToLower()))
                            {

                                    pincode = null;

                            }

 lmmatch.Add(new MatchAddress() { Name = ma.Name, District = ma.District, Pincode = (pincode == null)? null : ma.Pincode , Rank = rank, Taluka = ma.Taluka });
            }

所以在这个匹配对象的lmmatch列表中设置了pincode null但是我只为null而不是vadodara并且有相同的taluka和村名。 如果taluka和名称不同,则不设置pincode null。

这背后的原因是在lm列表中pincode和taluka都有vadodara然后只设置pincode null。 但是我写的这段代码也为名字vadodara设置了pincode null,其中taluka与gandhinagar不一样。

所以在rus之后这个代码我有两个对象,他们都设置了pincode null但我不想只为vadodara,他们有名字和taluka相同。

所以我知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

将您的if更改为

   if (str.Contains(ma.Name) && ma.Name.ToLower().Equals(ma.Taluka.ToLower()))

答案 1 :(得分:0)

您只需要在代码中进行更改

if (str.Contains(ma.Name) && ma.Name.Equals(ma.Taluka))

你只需要comare ma.Name = ma.taluka simple