将序言列表元素添加到c#

时间:2019-01-02 16:48:05

标签: c# prolog

我的代码根据值范围查找事实:

ara_deger_price(L,H,Res) :-
   findall( (Id,B,C,D,Price,F,Points),
            ( table(Id,B,C,D,Price,F,Points),
              \+ Price = null, \+ Price = 'Price', Price > L, Price < H
            ),
            Res).

它给出如下列表结果:

?- ara_deger_price(200,250,X).
X = [ (284, 'Viña Cobos 2011 Marchiori Vineyard Block C2 Malbec (Perdriel)', 'Argentina', 'Malbec', 215, 'Michael Schachner', 92), (349, 'Torbreck 2012 RunRig Shiraz-Viognier (Barossa)', 'Australia', 'Shiraz-Viognier', 225, 'Joe Czerwinski', 97)] ;
false.

我想要做的是将此列表的每个元素添加到C#列表框中。我可以使用nth0 / 3访问元素,但是我想访问其中的每个元素。

我尝试过:

show_record([]).
show_record([A|B]) :- write(A), write("\n"), show_record(B).

在控制台中将每个元素打印到一行。我可以将结果从控制台重定向到列表框,还是可以访问Prolog中的每个元素?

1 个答案:

答案 0 :(得分:0)

我解决了问题,却忘了更新。这是我用来解决问题的代码:

unwindToRoot

它从aralik_price(L,H,X):-ara_deger_price(L,H,Res), member(X,Res). 获取列表Res,并找到每个成员,并用X变量将它们全部返回。在C#中,我可以通过简单地遍历X变量来获取所有成员。