1

我真的很讨厌 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 匹配的项目的名称(这是唯一的),然后找到具有相同名称的所有项目(其中有很多)。

4

2 回答 2

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();

}
于 2012-09-12T20:23:04.783 回答
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
于 2012-09-12T20:48:19.337 回答