将循环语句转换为linq模式

时间:2014-01-28 08:05:32

标签: c# asp.net linq

我有一个像这样的模型对象类

public class EventInterestsResponse
{
    public string id { get; set; }
    public int sortOrder { get; set; }
    public string name { get; set; }
    public string categoryName { get; set; }
    public string categoryId { get; set; }
}

我用它来保存这样的数据

 public List<EventInterestsResponse> GetEventInterests()
    {

        _data = _rh.ExecuteGetRequest();
        var yourObject = _data != null ? (List<EventInterestsResponse>)jsonSerializer.Deserialize<List<EventInterestsResponse>>(_data) : null;    
        return yourObject;
    }

后来我想对此进行一些操作。 例如,我想检查任何结果对象是否包含特定的categoryId,如果是,我想打印它。我已经编写了一些代码并且可以正常工作

  var InterstList = rb.GetEventInterests();
             foreach (var interest  in InterstList)
                        {
                            if (interest.categoryId == "11")
                            {

                    <strong>Branche:@interest.name</strong> 
                            }
                            if (interest.categoryId == "22")
                            {

                    <strong>Udviklingsstadie:@interest.name</strong> 
                            }
                        }

现在我想知道:这是最优雅的方式吗?也许我甚至不想使用foreach循环。这可以通过LINQ和lambda表达式来实现吗?

任何人都可以告诉我如何修改此代码以便它使用LINQ和lambda表达式吗?

2 个答案:

答案 0 :(得分:2)

我认为您不能删除foreach循环,但可以使用Enumerable.Where Method过滤InterstList,因此foreach循环只会枚举{{}的元素1}} InterstList等于categoryId11而不是所有元素。

22

<强>更新
如果您想先检查var InterstList = rb.GetEventInterests(); foreach (var interest in InterstList.Where(x => x.categoryId == "11" || x.categoryId == "22")) { if (interest.categoryId == "11") { <strong>Branche:@interest.name</strong> } if (interest.categoryId == "22") { <strong>Udviklingsstadie:@interest.name</strong> } } 是否包含InterstList等于categoryId11的任何元素,您可以使用Enumerable.Any Method

22

答案 1 :(得分:1)

我和linq一起你也必须做一个循环。但linq语句将是这样的:

    var InterstList = rb.GetEventInterests();
    foreach (var interset in IntersetList.Where(x => x.categoryId == "11" || x.categoryId == "22")
    {
        <strong>Branche:@interest.name</strong> 
        <strong>Udviklingsstadie:@interest.name</strong> 
    }