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