从列表中选择具有相同代码的列表

时间:2013-12-03 19:16:43

标签: c# linq linq-to-sql

我在获取以下值时遇到问题。 我有一个名为零售商的表,其中包含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 
        }
    }
}

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

试试这个解决方案:

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

答案 1 :(得分:2)

我不认为我完全理解您的问题,但是从您的代码评论和您尝试选择具有相同代码的零售商,我向您呈现以下内容..

要使用与当前零售商匹配的代码将第一个零售商从列表中删除,您需要执行以下操作:

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

然后,您可以检查retailerWithMatchingCode对象是否为空值。如果您只想知道是否存在具有匹配代码的零售商,您可以这样做:

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

要获取具有匹配“代码”属性值的零售商列表,您需要执行以下操作:

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

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