我有一个List<MediaRef>
,我想在它上面应用Take和Where条件,但它不起作用我想知道是什么问题。我的问题是
List<MediaRef> objmed = new List<MediaRef>();
objmed = GetRecords(); //GetRecords will fetch records
objmed.Where(e => e.Title.Contains(Keyword)) //This line is not working
并且条件不起作用但是当我将其更改为
时List<MediaRef> objmed = new List<MediaRef>();
objmed = GetRecords();
objmed = (from p in objmed
where p.Title.Contains(Keyword)
select p).ToList();
工作正常。我使用Take()
函数面临同样的问题。可能是什么问题?
答案 0 :(得分:4)
objmed.Where(e =&gt; e.Title.Contains(Keyword))//这一行不起作用
您需要分配结果,Were
运算符不会更改源集合,它会创建一个惰性输出集合。
当您枚举Where
的结果时,它将读取源集合并返回与条件匹配的元素。在您的工作示例中,您是(1)分配结果,(2)使用ToList
强制枚举。
尝试:
// No need to create a List<> only to throw it away
List<MediaRef> objmed = GetRecords();
objmed = objmed.Where(e => e.Title.Contains(Keyword)).ToList();
答案 1 :(得分:1)
试试这个:
List<MediaRef> objmed = new List<MediaRef>();
objmed = GetRecords(); //GetRecords will fetch records
objmed = objmed.Where(e => e.Title.Contains(Keyword));
您忘了将结果分配给某事。
答案 2 :(得分:0)
试试这个......
var records = GetRecords().Where(e => e.Title.Contains(Keyword)).ToList();
如果您要使用ToList()
枚举列表,则foreach
是不必要的。
答案 3 :(得分:0)
您需要将输出分配给新变量 - 例如
var withWhere = objmed.Where(e => e.Title.Contains(Keyword));
var withTakeAndWhere = withWhere.Take(10);
或者,当然你可以使用流体造型:
List<MediaRef> objmed =
GetRecords()
.Where(e => e.Title.Contains(Keyword))
.Take(10)
.ToList();
答案 4 :(得分:0)
你想要达到什么目的? .Where和.Take方法根据给定的条件返回对象列表。
代码应为:
List<MediaRef> objmed = new List<MediaRef>();
objmed = GetRecords(); //GetRecords will fetch records
objmed = objmed.Where(e => e.Title.Contains(Keyword)) //This line is not working