[英]How to put where condition in select condition in Linq query
我有一個問題。 在這里,我想根據Fields和Datafield的某些條件進行過濾。 我怎樣才能做到這一點?
下面是我的linq查詢: 注意:這段代碼正在運行。
DataSet queries = query.GetQueryDetails(reportName);
str = queries.Tables[1].AsEnumerable().Select(dataRow => new Query { CommandText = dataRow.Field<string>("CommandText"), DataSetName = dataRow.Field<string>("DataSetName"), Key = dataRow.Field<int>("Fields"), Value=dataRow.Field<string>("DataField") }).ToList();
我想做這樣的事情,但這是不可能的。 注意:下面的代碼不起作用。 顯示編譯錯誤。
DataSet queries = query.GetQueryDetails(reportName);
str = queries.Tables[1].AsEnumerable().Select(dataRow => new Query { CommandText = dataRow.Field<string>("CommandText"), DataSetName = dataRow.Field<string>("DataSetName"), Key = dataRow.Field<int>("Fields").Where(dataRow.Field<int>(("DictVal") == "Key")), Value=dataRow.Field<string>("DataField").Where(dataRow.Field<string>(("DictVal") == "Value")) }).ToList();
我知道無論我們想要什么,我們都無法放在哪里。 但我想根據條件選擇Fields和DataField列。 誰能幫幫我嗎? 可能嗎?
僅供參考:
public partial class Query
{
public string DataSetName { get; set; }
public string CommandText { get; set; }
public int Key { get; set; }
public string Value { get; set; }
}
注意: CommandText,DataSetName,Fields和DictVal是表的列。
歡迎來到StackOverflow👋!
我會選擇以下內容:
str = queries
.Tables[1]
.AsEnumerable()
.Select(dataRow =>
{
var query = new Query
{
CommandText = dataRow.Field<string>("CommandText"),
DataSetName = dataRow.Field<string>("DataSetName")
};
switch (dataRow.Field<string>("DictVal"))
{
case "Key":
query.Key = dataRow.Field<int>("Fields");
break;
case "Value":
query.Value = dataRow.Field<string>("DataField");
break;
}
return query;
})
.ToList();
這使用了lamda表達式的另一種表示法,它們聲明了一個完整的正文。
你得到了什么編譯錯誤?
以下是我的回答:
str = queries.Tables[1]
.AsEnumerable()
.Select(dataRow =>
{
var dictVal = dataRow.Field<string>("DictVal");
return new Query
{
CommandText = dataRow.Field<string>("CommandText"),
DataSetName = dataRow.Field<string>("DataSetName"),
Key = dictVal == "Key"
? dataRow.Field<int>("Fields")
: int.MinValue,
Value = dictVal == "Value"
? dataRow.Field<string>("DataField")
: string.Empty
};
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.