2013-12-03 58 views
1

我在获取以下值时遇到问题。 我有一个包含ID,描述,语言和代码 我宣布我的应用程序列表,其中包含所有的零售商列出从具有相同代码的列表中选择

var retailers = new List<Retailer>(); 

现在我需要用相同的代码添加两个零售商的结果,这样的表叫零售商我在下面试图做,我确信我做错了什么。

foreach (var retailer in retailers) 
{ 
    if (retailer.LanguageId != null) 
    { 
     // Here I am trying to findout if there are any other retailers who 
     // has same code if true then I need entire row of that retailer 

     **var retailerWithSameUacode = !retailers.Select(item => item.Code == retailerCode).SingleOrDefault();** 
     if (retailerWithSameUacode != null) 
     { 
      // Do something 
     } 
    } 
} 

任何帮助非常感谢!

+0

你需要[Where extension](http://msdn.microsoft.com/ru-ru/library/system.linq.enumerable.where(v = vs.110).aspx) – Grundy

+0

你是什么意思通过concatenate ?你想删除重复?以某种方式组合它们? –

+0

@GrantWinney我的意图是如果我找到了一个代码相同的零售商,那么我需要对这2个零售商的结果进行简化。 –

回答

2

我不认为我完全明白你的问题,但是从你的代码注释,你尝试选择具有相同的代码零售商,我为大家介绍以下。 。

为了得到第一个零售商您的列表与当前零售商相匹配的代码,你需要做的是:

Retailer retailerWithMatchingCode = retailers.Where(r => r.Code == retailer.Code).FirstOrDefault(); 

然后,您可以检查retai lerWithMatchingCode对象为空值。如果你只是想知道,如果有匹配的代码零售商存在,这是你会做什么:

if (retailers.Any(r => r.Code == retailer.Code)) 
//Do something.. 

要得到谁拥有匹配的“代码”属性值零售商名单,你需要做的此:

List<Retailer> retailersWithMatchingCode = retailers.Where(r => r.Code == retailer.Code).ToList(); 

请注意,此代码未经测试。

+1

哪里是多余的: 零售商retailerWithMatchingCode = retailers.Where(r => r.Code == retailer.Code).FirstOrDefault(); Just use: 零售商零售商WithMatchingCode = retailers.FirstOrDefault(r => r.Code == retailer.Code); – Jason

+0

@Jibberish,你是绝对正确的,我对这种冗余的判断比我想承认的要多 - 我只是觉得由于某种原因它更具可读性。 – aardvark

2

尝试这种解决方案:

var retailerWithSameUacode = retailers 
    .Where(item => item.LanguageId != null && item.Code == retailerCode) 
    .ToList(); 
foreach (var item in retailerWithSameUacode) 
{ 
    // Do something 
} 
相关问题