代码如下:
public class LinqDatabase : MonoBehaviour
{
[Serializable]
public class Supplier
{
public string Name;
public string District;
public int Age;
}
[Serializable]
public class Buyer
{
public string Name;
public string District;
public int Age;
}
[SerializeField] private List<Buyer> _buyers = new List<Buyer>();
[SerializeField] private List<Supplier> _supplier = new List<Supplier>();
void Start ( )
{
var leftOuterJJoin = from s in _supplier
join b in _buyers on s.District equals b.District into NewbuyersGroup
from BG in NewbuyersGroup.DefaultIfEmpty()
select new
{
s.Name, s.District,
BuyersName = BG?.Name ?? "No one here"
};
foreach ( var VARIABLE in leftOuterJJoin )
{
Debug.Log ( $"{VARIABLE.Name} {VARIABLE.District}" );
Debug.Log ( VARIABLE.BuyersName );
}
}
}
我的问题是,如果你比较列表,它应该输出no one here for S5w和TTW mkm,因为在地区中没有匹配。但是,DefaultIfEmpty似乎不适用于整个列表,而只适用于第一个不匹配的对象(S4ko)。我如何将no one here应用于所有不匹配的地区?
1条答案
按热度按时间tp5buhyn1#
它工作正常。
您已经在Unity Console中启用了
Collapse
选项,这意味着如果多次打印完全相同的消息,它只显示一次,但有一个小计数器。您可以在右边框上看到
已记录3次。
=〉禁用
Collapse
,它应该可以正常工作。请参阅fiddle
为了避免这种混淆,我会制作一个包含所有相关信息的日志。
这本来就不会发生;)