感受一下.net中用 lambda与 linq 做数据集过滤的不同

时间:2023-03-09 15:44:14
感受一下.net中用 lambda与 linq 做数据集过滤的不同

lambda:

          ids.Add(
_hahahacontext
.hahahamodel
.FirstOrDefault(   
a => //lambda做过滤
a.name == "张宏伟"
&& a.age==
)
.id
.ToString()
);

linq:

        ids.Add((
from r in _hahahacontext.hahahamodel // linq 做查询过滤
where (r.name == "张宏伟"&& r.age == )
select r.id
).FirstOrDefault()
.ToString()
);

涉及到多表联查的时候,那真的是linq看起来更清晰,而lambda的话可能会把你搞乱。

比如:

viewModel.fields = new SelectList(
_hahahacontext
.hahahamodel1
.Where(
a => _hahahacontext
.hahahamodel2
.Where( // lambda 过滤和联查都是放到一起的,容易搞乱
b =>
a.REF_ENUMID == "-5136816235353979"
&& b.REF_ENUMID == "-5136816235353979"
&& a.STATE == ""
&& a.PARENT_ID == b.ID //表关联
&& b.SHOWVALUE != "欧洲"
)
.Any()
)
.Select(a => a.SHOWVALUE)
.ToArray()
.Prepend("")
.Distinct()
.ToList()
.OrderBy(a => a.ToString()));

但是,linq 中可以用“ join ” 来联查,如同sql语句一样。