var resultNumbers = context.Numbers
.Where(n => requestNumbers.Contains(n.oldNumber) || requestNumbers.Contains(n.newNumber))
.Select(selector: n=> new StringCollection { n.oldNumber, n.newNumber}).ToArrayAsync()。
我試圖為上述查詢獲得單維串列,而不是二維的。 我在請求中的數字串列為 "requireNumbers",并且需要檢查數字是否在列(onldNumber和newNumber)中,并且應該只回傳匹配的數字串列,比如如果在oldNumber中匹配,應該只回傳n.oldNUmber而不是其他的列值。
uj5u.com熱心網友回復:
我認為你正在尋找SelectMany()。
將一個序列的每個元素投射到一個IEnumerable中,將得到的序列平鋪到一個序列中,并對其中的每個元素呼叫一個結果選擇器函式。
下面,是來自微軟網站的一個例子的復制粘貼。 https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.selectmany?view=net-5.0
class PetOwner
{
public string Name { get; set; }
public List<string> Pets { get; set; }
}
public static void SelectManyEx3()
{
PetOwner[] petOwners =
{ new PetOwner { Name="Higa",
寵物 = new List<string>{ "Scruffy"/span>, "Sam" } },
new PetOwner { Name="Ashkenazi",
寵物 = new List<string>{ "沃克", "糖" }。},
new PetOwner { Name="Price",
Pets = new List<string>{ "scratches", "Diesel" }。},
new PetOwner { Name="Hines",
Pets = new List<string>{ "Dusty" } } };
//投影寵物主人的名字和寵物的名字。
var query =
petOwners
.SelectMany(petOwner => petOwner.Pets, (petOwner, petName) => new{ petOwner, petName })
.Where(ownerAndPet => ownerAndPet.petName.StartsWith("S"/span>)
.Select(ownerAndPet =>
new new
{
業主 = ownerAndPet.petOwner.Name,
寵物 = ownerAndPet.petName
}
);
//列印結果。
foreach (var obj in query)
{
Console.WriteLine(obj)。
}
}
//這段代碼產生以下輸出:
//
/// {Owner=Higa, Pet=Scruffy}
// {Owner=Higa, Pet=Sam}
// {Owner=Ashkenazi, Pet=Sugar}
// {Owner=Price, Pet=Scratches}
uj5u.com熱心網友回復:
謝謝 @KlausGütter,
var resultNumbers = await context.Numbers
.Where(n => requestNumbers.Contains(n.oldNumber) || requestNumbers.Contains(n.newNumber))
.Select(selector: n => requestNumbers.Contains(n.oldNumber) ? n.oldNumber : n.newNumber)
.Distinct()
.ToArrayAsync()
.ConfigureAwait(continueOnCapturedContext: false)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/307075.html
標籤:
上一篇:AutoMapper-將串列中的物件轉換為單一物件,有一個嵌套的串列
下一篇:云計算學習筆記(4)(網路布線)
