我有一个像这样的模型对象类
public class EventInterestsResponse
{
public string id { get; set; }
public int sortOrder { get; set; }
public string name { get; set; }
public string categoryName { get; set; }
public string categoryId { get; set; }
}
我用它来保存这样的数据
public List<EventInterestsResponse> GetEventInterests()
{
_data = _rh.ExecuteGetRequest();
var yourObject = _data != null ? (List<EventInterestsResponse>)jsonSerializer.Deserialize<List<EventInterestsResponse>>(_data) : null;
return yourObject;
}
后来我想对此进行一些操作。
例如,我想检查任何结果对象是否包含特定的categoryId
,如果是,我想打印它。我已经编写了一些代码并且可以正常工作
var InterstList = rb.GetEventInterests();
foreach (var interest in InterstList)
{
if (interest.categoryId == "11")
{
<strong>Branche:@interest.name</strong>
}
if (interest.categoryId == "22")
{
<strong>Udviklingsstadie:@interest.name</strong>
}
}
现在我想知道:这是最优雅的方式吗?也许我甚至不想使用foreach
循环。这可以通过LINQ和lambda表达式来实现吗?
任何人都可以告诉我如何修改此代码以便它使用LINQ和lambda表达式吗?
答案 0 :(得分:2)
我认为您不能删除foreach
循环,但可以使用Enumerable.Where Method过滤InterstList
,因此foreach
循环只会枚举{{}的元素1}} InterstList
等于categoryId
或11
而不是所有元素。
22
<强>更新强>
如果您想先检查var InterstList = rb.GetEventInterests();
foreach (var interest in InterstList.Where(x => x.categoryId == "11"
|| x.categoryId == "22"))
{
if (interest.categoryId == "11")
{
<strong>Branche:@interest.name</strong>
}
if (interest.categoryId == "22")
{
<strong>Udviklingsstadie:@interest.name</strong>
}
}
是否包含InterstList
等于categoryId
或11
的任何元素,您可以使用Enumerable.Any Method:
22
答案 1 :(得分:1)
我和linq一起你也必须做一个循环。但linq语句将是这样的:
var InterstList = rb.GetEventInterests();
foreach (var interset in IntersetList.Where(x => x.categoryId == "11" || x.categoryId == "22")
{
<strong>Branche:@interest.name</strong>
<strong>Udviklingsstadie:@interest.name</strong>
}