我如何将其重写为一个linq语句?

时间:2012-09-12 20:00:01

标签: linq

我真的很害怕LINQ语句,所以如果有人能帮我找到巩固这两个陈述的方法,我将永远感激:

public IList<SomeType> getSomeTypes(string id){
        string itemName = (from item in _itemcollection
                    where item.id.Equals(id)
                    select item.name).FirstOrDefault();
        return (from item in _itemcollection
                item.name == itemName
                select item)
               .ToList();

id是一个唯一的id,这是_itemcollection是一个IQueryable。

目标是获取与id匹配的项目的名称(这是唯一的),然后找到所有具有相同名称的项目(其中有很多项目。)

2 个答案:

答案 0 :(得分:1)

public IList<SomeType> getSomeTypes(string id) {

  return (from item1 in _itemcollection
          join item2 in _itemcollection on item1.name equals item2.name
          where 
            item1.id.Equals(id)
          select item2).ToList();

}

答案 1 :(得分:1)

我喜欢在这些情况下使用let或只是内联

from item in _itemcollection
let match = _itemcollection.FirstOrDefault(x => x.id.Equals(id))
let itemName = match == null ? '' : match.name
where item.name == itemName 
select item